在参数化测试类中排除非参数测试
2022-08-31 14:48:44
JUnit 中是否有任何注释来排除参数化测试类中的非参数测试?
从 Junit 5.0.0 开始,您现在可以使用 来注释测试方法。所以不需要内部类。除了 ValueSource 之外,还有很多方法可以为参数化测试提供参数,如下所示。有关详细信息,请参阅官方 junit 用户指南:@ParameterizedTest
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class ComponentTest {
@ParameterizedTest
@ValueSource(strings = { "racecar", "radar", "able was I ere I saw elba" })
public void testCaseUsingParams(String candidate) throws Exception {
}
@Test
public void testCaseWithoutParams() throws Exception {
}
}
如果您仍在使用 Junit 4(我使用 v4.8.2 进行了测试),则可以将封闭式运行器与内部类和参数化运行器结合使用:
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Enclosed.class)
public class ComponentTest {
@RunWith(Parameterized.class)
public static class ComponentParamTests {
@Parameters
...
@Test
public void testCaseUsingParams() throws Exception {
}
}
public static class ComponentSingleTests {
@Test
public void testCaseWithoutParams() throws Exception {
}
}
}
不。最佳做法是将这些非参数化测试移动到其他类(.java文件)