对于方法类型在JUnit测试中的放置顺序,是否有任何成文的约定?我通常有以下顺序:@Before
、@Test
、@After
;我也见过:@Test
,@Before
,@After
。
示例方法:
public class SandBoxTest {
SandBox sand;
@BeforeClass
public void classSetup() { }
@Before
public void given() { }
@Test
public void shouldTestThis() { }
// support method
private boolean doStuff() {
return true;
}
@Test
public void shouldTestThat() { }
@After
public void cleanUp() { }
@AfterClass
public void classCleanUp() { }
}
如果有"标准"约定,请提供参考资料。
我认为没有这样的编码约定,但不要忘记@Rule注释。
http://blog.schauderhaft.de/2009/10/04/junit-rules/
我与一位同事进行了讨论。我主张@BeforeClass
、@Before
、@After
、@AfterClass
的顺序,然后是所有的@Test
,而他希望顺序是@BeforeClass
、@Before
、所有的@Test
,然后是@After
、@AfterClass
。
我认为将setUp和tearDown方法放在顶部的理由是:
- 当您进入测试类时,您可以很容易地看到测试的条件
- 很多时候,tearDown是setUp中所做的事情的反映。在这种情况下,将它们都显示在屏幕上会很有用,这样可以更容易地看到它们是否匹配
- 你不必滚动到底部来查看是否有任何tearDown(我们通常在项目中的测试类中没有)
他将测试置于setUp和tearDown方法之间的论点是,这是逻辑顺序,也反映了方法被超越的顺序。
我们在互联网上搜索了一个约定,但没有找到,所以最终我们同意不同意,并决定在项目中接受这两个订单。
这可能不是这个问题的直接答案,但我想我会与其他面临同样决定的人分享我们的讨论。