JUnit方法订单转换

时间:2013-07-18 21:52:42

标签: java junit conventions

对于在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() { }
}

如果有“标准”惯例,请提供参考。

2 个答案:

答案 0 :(得分:1)

我认为没有这样的编码约定,但不要忘记@Rule注释。

http://blog.schauderhaft.de/2009/10/04/junit-rules/

答案 1 :(得分:0)

我和一位同事讨论过这个问题。我在争论订单@BeforeClass@Before@After@AfterClass,然后是所有@Test,而他希望订单为{{1} },@BeforeClass,所有@Before,然后是@Test@After

我将setUp和tearDown方法放在首位的论点是:

  • 进入测试课程时,您可以轻松查看测试条件。
  • 很多时候,tearDown反映了setUp中完成的事情。在这种情况下,将它们放在屏幕上以便更容易看到它们彼此匹配会很有用。
  • 您不必滚动到底部以查明是否有任何tearDown(我们通常在项目的测试类中没有)。

他在setUp和tearDown方法之间进行测试的论点是它是逻辑顺序,它也反映了方法的排序顺序。

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

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