[英]java.lang.IllegalArgumentException: argument type mismatch
[英]Junit Parameterized Test fail with java.lang.IllegalArgumentException: argument type mismatch
我创建了以下代码,引发了“ java.lang.IllegalArgumentException:参数类型不匹配 ”异常。 我相信这是由错误的返回类型Iterable引起的。 但是我尝试了Collection和Iterable,两者都抛出了参数类型不匹配异常。 有人可以帮忙吗? 提前致谢。 从跟踪中,它在完成input()方法后引发异常。
@Parameterized.Parameters
public static Iterable<Object[]> input() {
ArrayList<String>srcList = new ArrayList<String>();
ArrayList<String>otherList = new ArrayList<String>();
return Arrays.asList(new Object[][] {
{srcList.add("https://www.test1.com"),20},
{otherList.add("https://www.test2.com"),20}
});
}
public WDDiffJunit2(ArrayList<String> url, int errCount) {
this.url = url;
this.errCount = errCount;
}
@Test
public void Test3() {
System.out.println("start test3");
loginPresenter.setModel(loginModel);
loginPresenter.readProperties();
loginPresenter.login();
diffPresenter.setModel(diffModel);
diffPresenter.setLoginModel(loginModel);
assertEquals(errCount,diffPresenter.getExtractMaps(url,false).values().size());
}
public HashMap<String, String> getExtractMaps(ArrayList<String> urls, boolean isSource) {
HashMap<String, String> a = new HashMap<String, String>();
a.put("a","a");
return a;
}
堆栈跟踪
java.lang.IllegalArgumentException:参数类型在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)处不匹配sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(45 ),位于org.junit.runners.Parameterized $ TestClassRunnerForParameters.createTest(Parameterized.java:86),位于org.junit.runners.BlockJUnit4ClassRunner $ 1.runReflectiveCall(BlockJUnit4ClassRunner,位于java.lang.reflect.Constructor.newInstance(Constructor.java:526) .java:236)位于org.junit.runners的org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:233)的org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)处。 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)上的BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:23) 1)在org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:60)在org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)在org.junit.runners.ParentRunner.access $ 000(ParentRunner .java:50)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:222)org.junit.runners.ParentRunner.run(ParentRunner.java:300)org.junit.runners.Suite.runChild (Suite.java:128)在org.junit.runners.Suite.runChild(Suite.java:24)在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)在org.junit.runners.ParentRunner org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)为org.junit.runners.ParentRunner.access为$ 1.schedule(ParentRunner.java:60)org.junit为$ 000(ParentRunner.java:50)。 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)处org.junit.runners.ParentRunner.run(ParentRunner.java:300)的Runners.ParentRunner $ 2.evaluate(ParentRunner.java:222) ),网址为org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference。 java:86)位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)在org.eclipse.org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)处org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) .jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
更换...
@Parameterized.Parameters
public static Iterable<Object[]> input() {
ArrayList<String>srcList = new ArrayList<String>();
ArrayList<String>otherList = new ArrayList<String>();
return Arrays.asList(new Object[][] {
{srcList.add("https://www.test1.com"),20},
{otherList.add("https://www.test2.com"),20}
});
}
...与:
@Parameterized.Parameters
public static Iterable<Object[]> input() {
ArrayList<String> srcList = new ArrayList<String>();
srcList.add("https://www.test1.com");
ArrayList<String>otherList = new ArrayList<String>();
otherList.add("https://www.test2.com");
return Arrays.asList(new Object[][] {
{srcList,20},
{otherList,20}
});
}
在原始形式中,您创建的是boolean, int
的Object[][]
boolean, int
因为srcList.add(...)
返回boolean
。 如果将srcList和otherList填充在Object[][]
初始化程序之外,则将得到正确类型的Object[][]
: List, int
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.