当前位置: 首页 > 知识库问答 >
问题:

Junit参数化测试失败,java.lang.IllegalArgumentException:参数类型不匹配

廖琨
2023-03-14
@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;
}

共有1个答案

越源
2023-03-14

替换...

@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}
    });
}

以其原始形式创建布尔值的对象[][],int,因为srclist.add(...)返回一个布尔值。如果在Object[][]初始化程序之外填充srcList和otherList,则最终将得到一个类型正确的Object[][]:List,int

 类似资料:
  • 问题内容: 这是我的代码,用于动态调用方法: 是一个字符串数组,这是我方法的声明 我收到此错误: 问题答案: 期望作为第二个参数(varargs只是一种方便的语法)。我认为在您的情况下,不会将其作为第一个vararg参数,而是将完整的vararg 以及因此您的单个字符串用作不匹配的参数。 在您的情况下,将参数显式地包装在数组中,然后再提供给它即可。 所以,做代替

  • 在Eclipse中使用参数化JUnit测试时,当我想重新运行一个测试时,遇到了一个问题。测试本身运行良好,虽然我可以从上下文菜单重新运行第一个测试,但可以重新运行第二个测试: 失败,并显示以下消息: JAVAlang.Exception:未找到匹配[{ExactMatcher:fDisplayName=test[1:A2]的测试-- 我很确定这是因为JUnit不喜欢我的数组;在某些情况下:我用它来

  • 在游戏实体中我有: 我得到这个错误: 游戏实体:

  • 我遇到了一个奇怪的行为,在类型为“具体化”的函数中使用Gson进行反序列化。仅当类型参数中涉及接口时才会发生这种情况。 采用以下代码: 第4行使用自定义扩展函数Gson。fromJson(json:String):T。 如果定义为具体化,则失败: 如果它被定义为普通类型参数,它就可以工作: (注意,使具体化在这里没有意义,只是想了解它在特殊用例中的影响) 使用具体化时的异常如下所示:

  • 参数化测试可以将不同的数据输入到测试中。不过,我创建了一个示例计算器,希望为其创建参数化测试。但是,我发现您只能为单个测试创建一组参数化数据。 我已经创建了参数化测试,用于添加两个数字,得到预期的结果。由于预期结果会有所不同,因此该数据将不适用于减法运算。 有没有可能为每个加、减、乘、除测试提供参数化数据? 非常感谢您的建议,