有没有一些方法来禁用Test per @ Test创建新的实例?Junit,如何禁用每个测试方法创建Test的新实例
1
A
回答
5
为了使这一答案的缘故:
每个测试public class MyTestClass {
private static String onceForAllTests;
@AfterClass
public static void afterClass() {
onceForAllTests = null; // silly, but just to demonstrate
}
@BeforeClass
public static void beforeClass() {
onceForAllTests = "This is set once for all tests";
}
@Test
public void sillyTest {
String someTestValue = "This is set during method";
assertNotEquals(onceForAllTests, someTestValue);
}
}
5
一个实例是JUnit的工作方式是默认的方式。然而,你可以编写你自己的测试运行器,它为所有测试使用一个单独的实例。您可能需要首先扩展BlockJUnit4ClassRunner。
0
我最终独立到达Mathew上面提出的解决方案。我认为会在这里发布我的简短解决方案。
在科特林代码:
class SingleInstanceRunner<T>(clazz : Class<T>) : BlockJUnit4ClassRunner(clazz) {
val instance : Any by lazy { super.createTest() }
override fun createTest() = instance
}
这里是上面的(未经测试)的Java编译:
private static class SingleInstanceRunner extends BlockJUnit4ClassRunner {
private Object instance;
SingleInstanceRunner(Class<?> clazz) throws InitializationError {
super(clazz);
}
@Override
protected synchronized Object createTest() throws Exception {
if (instance == null) {
instance = super.createTest();
}
return instance;
}
}
通过这一解决方案,这个亚军注释您的测试类。
在科特林:
@RunWith(SingleInstanceRunner::class)
class MyTest {
...
}
在Java:
@RunWith(SingleInstanceRunner.class)
public class MyTest {
...
}
这在结合使用@FixMethodOrder
采用的junit在某些系统测试类型场景。
相关问题
- 1. 强制TestNG为每个方法测试创建新实例
- 2. JUnit:调用每个@Test方法之前的新实例。有什么好处?
- 3. 如何使用Junit配置SpringBoot的每个测试方法实例化?
- 4. 如何为创建新对象的void方法编写junit测试用例
- 5. 通过方法或类创建每个Junit实例
- 6. Junit用于创建文件的void方法的测试案例
- 7. 无法在helios中创建新的junit测试用例
- 8. 如何为测试junit测试用例创建jar?
- 9. ExecutorService - 在方法中创建新实例vs每个类创建一个实例
- 10. 的方法实例VS一流水平的实例JUnit测试
- 11. 无效方法的Junit测试用例
- 12. 以下方法的Junit测试用例
- 13. 如何写这个方法的junit测试用例
- 14. 每个测试方法的新WebDriver实例?
- 15. 如何在JUnit测试用例中测试方法中的方法?
- 16. NUnit现在是否为每个包含的测试方法创建测试夹具类的新实例?
- 17. 使用Eclipse创建新的JUnit测试用例
- 18. 具有多个@Test方法的Junit测试类
- 19. 如何编写一个junit测试用例添加方法?
- 20. 为isSorted()方法创建JUnit测试用例的最佳方式是什么?
- 21. 实例化jUnit测试类
- 22. 如何创建一个实例的webdriver的数据提供程序@Test方法
- 23. 如何单元测试实例创建?
- 24. 创建每个实例的新文件
- 25. 如何在junit中创建动态测试用例?
- 26. 如何使用JUnit测试方法?
- 27. JUnit测试方法,测试add方法
- 28. 如何强制TestNG为每种方法创建测试类的新实例如果运行模式为parallel =“methods”
- 29. 如何创建一个JUnit测试来测试CompareTo?
- 30. JUNIT无效方法测试案例
你不能,它只是JUnit的工作方式。如果您有可以为所有测试创建的对象,请标记静态方法@BeforeClass并在其中设置静态变量 – Lucas 2013-03-22 15:26:05
@Lucas和'@ AfterClass'以进行清理 – Paranaix 2013-03-22 15:26:35
@Lucas谢谢! – user1013149 2013-03-22 16:05:01