2015-10-04 237 views
2

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

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

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

@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
+0

在5分钟内,我可以接受一个答案 – Kingamere

+0

恐怕如果你想为整个测试套件执行一些代码(不管它是什么),你必须开发一些代码来做到这一点。为此,我创建了一个单例(带有静态字段的类),并确保跟踪每个调用,以便只在第一次调用时才执行某些操作。 –

回答

15

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

注解一个公共无效方法与@Before导致该方法的Test方法之前运行。

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

注解一个公共静态无效的无参数方法与@BeforeClass使其前一次中的任何类的测试方法来运行。

2

这正是@Before@After应该做的。如果您想在整个测试课程之前运行一些设置代码,则应使用@BeforeClass。以同样的方式,如果您想在完成整个测试课程后拆除,则应使用@AfterClass。请注意,这两个注释应用于的方法应该是public static并且不带任何参数。

相关问题