JUnit TestCase对象实例化

Man*_*nki 9 java junit instantiation testcase

是否使用新的(或不同的)TestCase对象实例来运行JUnit测试用例中的每个测试方法?或者一个实例重用于所有测试?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}
Run Code Online (Sandbox Code Playgroud)

在运行此测试时,MyTest会创建多少个类实例?

如果可能,请提供指向我可以验证行为的文档或源代码的链接.

anj*_*anb 8

是的,创建了一个单独的实例.

在运行该测试时,会创建2个MyTest实例.

如果您想要不同的行为,一种选择是使用名为TestNG的类似工具(http://testng.org/doc/).


Dov*_*man 4

我在 JUnit 文档中找不到关于您的问题的明确答案,但正如 anjanb 所写,其目的是每个测试都独立于其他测试,因此可以为每个要运行的测试创建一个新的 TestCase 实例。

如果您有昂贵的测试设置(“ fixtures ”)并希望在测试类中的所有测试用例之间共享,则可以在静态方法上使用@BeforeClass注释来实现此结果: http://junit.sourceforge。 net/javadoc_40/org/junit/BeforeClass.html。但请注意,仍可能为每个测试创建一个新实例,但这不会影响 @BeforeTest 方法已初始化的静态数据。