JUnit方法顺序转换



对于方法类型在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方法之间的论点是,这是逻辑顺序,也反映了方法被超越的顺序。

我们在互联网上搜索了一个约定,但没有找到,所以最终我们同意不同意,并决定在项目中接受这两个订单。

这可能不是这个问题的直接答案,但我想我会与其他面临同样决定的人分享我们的讨论。

最新更新