我有以下Junit测试,我试图将其作为参数化测试运行,以允许使用测试方法测试多个条件,然而运行此
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
public class ProductCategoryTest {
private boolean isAggregate;
private ProductCategory category;
public ProductCategoryTest(boolean isAggregate, ProductCategory category) {
this.isAggregate = isAggregate;
this.category = category;
}
@Parameterized.Parameters
public static List<Object[]> categoryList() {
return Arrays.asList(new Object[][]{
{true, new ProductCategory("A", "Laundry", ProductCategory.Type.Aggregate)},
{false, new ProductCategory("B", "Dryer", ProductCategory.Type.Individual)},
});
}
@Test
public void isAggregateProductCategory() throws Exception {
assertEquals(isAggregate, category.isAggregateProductCategory());
}
}
我得到的例外:
java.lang.Exception: No tests found matching categoryList with any parameter from org.junit.runner.Request$1@123772c4
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:96)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
答案 0 :(得分:1)
我在我的电脑上尝试了你的代码,它在我的电脑上运行正常。 我怀疑你的环境中有库或JUnit跑步者的问题。
尝试输入您自己的测试跑步者。以下是如何执行此操作的示例:
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.RunWith;
import org.junit.runner.notification.Failure;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.List;
import org.junit.runner.Result;
import static org.junit.Assert.assertEquals;
class ProductCategory {
enum Type {
Aggregate, Individual
};
public ProductCategory(String a, String b, Type t) {
}
}
@RunWith(Parameterized.class)
public class ProductCategoryTest {
private boolean isAggregate;
private ProductCategory category;
public ProductCategoryTest(boolean isAggregate, ProductCategory category) {
this.isAggregate = isAggregate;
this.category = category;
}
@Parameterized.Parameters
public static List<Object[]> categoryList() {
return Arrays.asList(new Object[][]{
{true, new ProductCategory("A", "Laundry", ProductCategory.Type.Aggregate)},
{false, new ProductCategory("B", "Dryer", ProductCategory.Type.Individual)},
});
}
@Test
public void isAggregateProductCategory() throws Exception {
//assertEquals(isAggregate, category.isAggregateProductCategory());
}
public static void main(String[] args) {
Result result = JUnitCore.runClasses(ProductCategoryTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}