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在每次测试之前和之后执行[重复]的主要内容,如果未能解决你的问题,请参考以下文章