在我的应用程序中,我有几个集成测试,它们都执行以下操作:
每次集成测试总是要做这三个初始步骤需要时间。我希望它们成为所有集成测试的基础。 有没有人有这方面的经验,可以用文章,工具,线程等指出我正确的方向?
感谢任何帮助!
/理查德
答案 0 :(得分:2)
你应该使用Junit5的@BeforeAll。
正如文档所述,@ BeforeAll用于表示在当前测试类中的所有测试之前应该执行带注释的方法。
因此,使用该方法,所有数据库设置都可以针对类进行一次,而不是针对每种方法进行一次。
答案 1 :(得分:1)
这里的一个选项是使用@BeforeClass
方法创建一个基类,以便在需要重用它时 - 只需通过测试类扩展它。
另一种选择是使用org.junit.runner.notification.RunListener。它为您提供了在不同事件上连接代码的可能性,例如:测试开始,测试完成等:
class TestListener extends RunListener {
@Override
public void testRunStarted(Description description) throws Exception {
// Called before any test has started
}
@Override
public void testRunFinished(Result result) throws Exception {
// Called when all tests have finished
}
@Override
public void testStarted(Description description) throws Exception {
}
@Override
public void testFinished(Description description) throws Exception {
}
@Override
public void testFailure(Failure failure) throws Exception {
}
@Override
public void testAssumptionFailure(Failure failure) {
}
@Override
public void testIgnored(Description description) throws Exception {
}
}
通过在插件配置中添加以下代码,您甚至可以使用Maven的surefire(单元测试)插件或故障安全插件(集成测试):
<properties>
<property>
<name>listener</name>
<value>com.your.awersome.TestListener</value>
</property>
</properties>
此解决方案更灵活,但如果您只需要为一个项目执行此操作,则与第一个选项相比,恕我直言不太明显。