JUnit @Before和@After在每次测试之前和之后执行

时间:2015-10-04 16:17:03

标签: java unit-testing junit spring-boot junit4

我正在运行测试Spring Boot应用程序的JUnit测试。我有一个@Before方法和一个@After方法。然后我有一堆@Test方法,这是实际的测试。

但是,我的@Before@After方法分别在每次测试之前和之后执行,而不是在所有测试之前执行一次,并且在所有测试之后执行一次。

难道我也在使用这个注释吗?

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

2 个答案:

答案 0 :(得分:20)

这是@Before@After的正常行为。引用@Before的文档,例如:

  

使用@Before注释公共void方法会导致该方法在Test方法之前运行。

如果您只想在所有测试之前和之后运行一次方法,则可以使用@BeforeClass@AfterClass。引用@BeforeClass的文档,例如:

  

使用@BeforeClass注释public static void no-arg方法会导致它在类中的任何测试方法之前运行一次。

答案 1 :(得分:3)

这正是@Before@After应该做的事情。如果要在整个测试类之前运行某些设置代码,则应使用@BeforeClass。以同样的方式,如果要在执行完整个测试类后拆除,则应使用@AfterClass。请注意,应用这两个注释的方法应该是public static并且不带参数。