Как показано в посте 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 . |