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

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

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

难道我也在用这个注解?

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

【问题讨论】:

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

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2020-10-25
      • 2020-05-20
      相关资源
      最近更新 更多