我对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理论编写单元测试。我要检查的边界案例有:
@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
所以我相信这篇文章回答了关于在@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响应示例: