我正在尝试使用
在同一类中运行参数化和非参数化测试用例@ExtendWith(MockitoExtension.class)
@RunWith(Enclosed.class)
但是某种程度上测试没有运行。我尝试了不使用csvFileSource
类的Enclosed
,它工作正常。这是我的测试类骨架的样子:(请帮助)
@ExtendWith(MockitoExtension.class)
@RunWith(Enclosed.class)
public class MyTest {
static class Base{
}
@RunWith(Parameterized.class)
public static class ParameterizedTests extends Base {
@ParameterizedTest(name = "testString:{0}")
@CsvFileSource(resources = "testCases.csv")
public void test(String testString) {
....
}
}
}
答案 0 :(得分:0)
首先,@RunWith
是JUnit 4的注释。运行JUnit Jupiter的@ParameterizedTest
时不需要它。有关详细信息,请参见https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests。
接下来,只有非静态嵌套类(即内部类)可以用作@Nested
测试类。有关详细信息和推理,请参见https://junit.org/junit5/docs/current/user-guide/#writing-tests-nested。
最小工作示例:
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
class MyTest {
class Base {}
@Nested
class ParameterizedTests extends Base {
@ParameterizedTest(name = "testString:{0}")
@ValueSource(strings = "testCases.csv")
void test(String testString) {
System.out.println(testString);
}
}
}