Как показано в посте Nifty JUnit: Работа с временными файлами , можно использовать @Rule
в тесте JUnit, который является правилом уровня метода. В этом примере я хотел бы показать вариант @ClassRule
для правила уровня класса.
Метод Правило
@Rule
запускается перед каждым методом тестирования (точно так же как @Before
) и после каждого метода тестирования (точно так же как @After
) класса теста, как показано в примере ниже.
JUnitRuleTest
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package com.jdriven; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; public class JUnitRuleTest { //The Folder will be created before each test method and (recursively) deleted after each test method. @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @Test public void testJUnitRule() throws IOException { File tempFile = temporaryFolder.newFile( "tempFile.txt" ); //Your test should go here. } } |
Правило класса
Помимо обычного @Rule
у нас есть возможность создать @ClassRule
. В примере с TemporaryFolder это приведет к созданию папки, которая создается перед всеми методами тестирования (например, @BeforeClass
) и уничтожается после всех методов тестирования (точно так же, как @AfterClass
). В приведенном ниже примере вы можете создать временный файл и использовать один и тот же файл во всех методах тестирования. Временный файл будет удален после завершения всех методов тестирования.
JUnitClassRuleTest
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package com.jdriven; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; public class JUnitClassRuleTest { //The Folder will be (recursively) deleted after all test. @ClassRule public static TemporaryFolder temporaryFolder = new TemporaryFolder(); public static File tempFile; @BeforeClass public static void createTempFile() throws IOException { tempFile = temporaryFolder.newFile( "tempFile.txt" ); //The tempFile will be deleted when the temporaryFolder is deleted. } @Test public void testJUnitClassRule_One() { //Your test should go here, which uses tempFile } @Test public void testJUnitClassRule_Two() { //Your test should go here and uses the same tempFile } } |
Ссылка: | Отличный JUnit: Использование правила на уровне метода и класса от нашего партнера по JCG Виллема Чейзу в блоге JDriven . |