JUnit @Before和@After在每次测试之前和之后执行[重复]

Posted

技术标签:

【中文标题】JUnit @Before和@After在每次测试之前和之后执行[重复]【英文标题】:JUnit @Before and @After executing before and after every test [duplicate] 【发布时间】:2016-01-01 08:13:44 【问题描述】:

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

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

难道我也在用这个注解?

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

【问题讨论】:

5 分钟后我可以接受答案 恐怕如果你想为整个测试套件(不管它是什么)执行一些代码,你必须开发一些代码来做到这一点。为此,我创建了一个单例(一个带有静态字段的类)并确保跟踪每次调用,以便只有第一次调用时才会执行某些操作。 【参考方案1】:

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

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

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

使用 @BeforeClass 注释公共静态 void 无参数方法会导致它在类中的任何测试方法之前运行一次。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于JUnit @Before和@After在每次测试之前和之后执行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

05-使用Junit进行测试

备忘:Junit单元测试

JUnit

Junit @Rule如何运作?

Hibernate初探之单表映射——使用Junit进行测试

Android stuidoMonkeyJenkins自动化测试初探