在所有JUnit测试运行后进行清理

时间:2014-07-16 07:05:13

标签: java junit

在我的项目中,我必须在所有测试之前进行一些存储库设置,并且在成功测试之后我想要清理,我知道@afterClass用于此但它需要静态变量但我不想让我的对象静态,所以有没有其他方法可以实现这个目标?

2 个答案:

答案 0 :(得分:2)

如果您使用的是JUnit4,请使用@After。文档here。请注意,以这种方式注释的方法将在每个测试用例之后执行,其方式与在每个测试用例之前执行的@Before类似。

如果您正在编写包含多个测试用例的集成测试并且您的设置很重,则可以使用@BeforeClass组合来设置静态对象,并使用@After来变异/清理/重置这些物体状态的某些部分。当然,这会违反您不使用静态变量的要求,但我无法真正看到该要求背后的基本原理。回想一下,JUnit为每个测试用例实例化一次测试类。

答案 1 :(得分:2)

如果您想在每种测试方法之前和之后进行设置和拆除,请使用@Before@After。如果您要设置一次,请运行所有测试然后拆除,请使用@BeforeClass@AfterClass

是的,@BeforeClass@AfterClass是静态方法,但请注意,JUnit会为每个测试方法重新创建测试类实例,因此您无法在测试类的非静态字段中维护任何信息不同的测试。

我和其他评论者一样,有一种感觉,你想要避免使用静态字段,因为他们认为这是不好的做法。但请注意,编写代码的良好做法通常不适用于编写测试的良好实践。这是一个这样的例子。