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

用JUnit理论测试接受字符串参数的方法

陆敏学
2023-03-14

我对JUnit理论很陌生。我有一个方法parse(),它将html字符串作为输入,并返回一个文档(html文档的DOM)

public Document parse(final String inputString) throws IllegalArgumentException {
    if (StringUtil.isBlank(inputString))
        throw new IllegalArgumentException("Input HTML String is empty,blank or null");
    return Jsoup.parse(inputString, "", Parser.xmlParser());
}

我想用Junit理论编写单元测试。我要检查的边界案例有:

    null
    @Rule
    public ExpectedException thrown = ExpectedException.none();

    @DataPoints
    public static String[] function(){
        return new String[]{
                ""," ",null
        };
    }
    @Theory
    public void test(String s) {
        System.out.println("called");
        if(s==null)
            System.out.println("null");
        System.out.println(s.length());
        thrown.expect(IllegalArgumentException.class);
        htmlAssessment.parse(s);    
    }

控制台O/P:

called
0
called
1

共有1个答案

蔚琦
2023-03-14

所以我相信这篇文章回答了关于在@datapoints中使用null的问题。JUnit4.12在使用包含NULL理论+枚举类型+数据点时会出现问题。

@datapoints似乎不使用声明字段的类型来确定理论输入的类型。相反,它分析每个实际值。因此,null不是链接到string而是链接到object。前提是null不应该提供给理论中的每个参数。

因此,您似乎不能在@datapoints中使用null。正如已经指出的,您需要使用@datapoint。但是,您可以执行以下操作,而不是使用3个@datapoint值...

@DataPoints
public static String[] nonNullValues = new String[]{"", " "};
@DataPoint
public static String nullValue = null;
@Theory
public void testIt(@TestedOn(ints={3,4,5}) int value){...}
@Theory
public void testIt(@TestOn(strings={"", " ", TestOn.NULL}) String value){...}

这将正确测试null。我非常喜欢这种机制,因为它允许我将theory值映射到单个测试。

 类似资料:
  • 红线位于“打开导航抽屉”和“关闭导航抽屉”下 这张图片显示了这个问题

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

  • 问题内容: 由于某种原因,我无法获得Maven 2 Surefire插件来执行JUnit 4测试类。 但是,如果我将此类更改为类似于JUnit-3的类,例如 然后执行它。这是我所做的: 验证的Maven版本:Apache Maven 2.2.1(r801777; 2009-08-06 20:16:01 + 0100) 验证的Surefire版本:遵循此建议 经过验证的Surefire版本:我的选中

  • 当我尝试对输入进行限制时,我在java中遇到了很多麻烦。在此示例中,我需要字符串代码仅接受和等符号。我如何检查以确保没有数字、字母或其他符号?谢谢

  • 编辑: XML请求示例: XML响应示例: