我有三个测试类来测试我的控制器、服务和 Kafka 消息传递。当我独立运行 Kafka 消息传递时,它可以工作。但是当我一起运行我的所有测试文件时,Kafka 测试类只要它是第一个被执行的就通过,否则它会失败。
我想通过确保 Kafka 测试类始终是第一个执行来命令测试类的执行。
我怎样才能做到这一点?带测试套件??还有其他方法吗?我的应用程序是使用 Micronaut、Java 8 构建的。
我有三个测试类来测试我的控制器、服务和 Kafka 消息传递。当我独立运行 Kafka 消息传递时,它可以工作。但是当我一起运行我的所有测试文件时,Kafka 测试类只要它是第一个被执行的就通过,否则它会失败。
我想通过确保 Kafka 测试类始终是第一个执行来命令测试类的执行。
我怎样才能做到这一点?带测试套件??还有其他方法吗?我的应用程序是使用 Micronaut、Java 8 构建的。
JUnit 运行的测试顺序是未定义的。您必须编写测试,以便它们可以独立运行。
首先,不要再假装集成测试(即实际调用 Kafka 的测试)是单元测试。如果您在被测试的方法之外调用某些东西,那么您正在运行集成测试。
可能的解决方案包括:
@Test
,并让它以所需的顺序调用现有“测试类”中的方法。尝试使用有助于测试执行顺序的 @OrderWith 注释
@OrderWith(Alphanumeric.class)
public class TestMethodOrder {
.....
}
上面的代码将按照方法名称的字母数字顺序运行测试。
我们还可以使用@FixMethodOrder 注释来提及方法必须排序和执行的顺序。目前,有三种选择
MethodSorters.DEFAULT
MethodSorters.NAME_ASCENDING
MethodSorters.JVM
@FixMethodOrder(MethodSorters.NAME_ASCENDING) 公共类 TestMethodOrder { ..... }
参考:https ://github.com/junit-team/junit4/wiki/Test-execution-order