我有一个如下的用例
对于JUnit流中的每个测试用例都是这样的 1.在@BeforeEach停止/启动模拟组件中能够接收数据 2.在@Test中,将数据发送到模拟组件并获取响应并进行断言
我正在寻找的增强功能是,应该能够使用不同的配置/设置来启动/停止模拟组件。
我在想以下几种选择
1.使用Junit 5标签(因此我们知道使用哪个标签的测试用例)
2.在@BeforeEach方法中,注入TestInfo类并检索标签,并根据标签相应地停止/启动模拟组件。
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestReporter;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class TestJUnit {
@BeforeAll
public static void onlyOnce() {
System.out.println("only once");
}
MockedComponent mock;
Actor actor;
@BeforeEach
public void restartComponent(TestInfo testInfo,TestReporter report) {
System.out.println("before each "+testInfo.getDisplayName()+"|"+testInfo.getTags()+"|"+testInfo.getTestClass());
mock.stop();
mock.start(testInfo.getTags().iterator().next());
}
@ParameterizedTest
@Tag("config1.settings")
public void testUsingConfig1() {
System.out.println("testHeaderValuesArePopulated ");
actor.getDataFromComponent().assertOrderId(123);
}
@ParameterizedTest
@Tag("config2.settings")
public void testUsingConfig2() {
actor.sendMsg("test messages 2");
actor.getDataFromComponent().assertOrderId(123);
}
}
使用Junit5还有更好的方法吗?