Java 成功断言后返回值
我对用于测试的函数有一个小问题。以下是我的测试方法:Java 成功断言后返回值,java,junit,Java,Junit,我对用于测试的函数有一个小问题。以下是我的测试方法: public static List<FieldError> proofFields(final List<String> fieldNames, final List<FieldError> errors, boolean fieldsAbsent){ List<FieldError> foundFields = errors.stream().filter(fieldError -&
public static List<FieldError> proofFields(final List<String> fieldNames, final List<FieldError> errors, boolean fieldsAbsent){
List<FieldError> foundFields = errors.stream().filter(fieldError -> fieldNames.contains(fieldError.getField())).collect(toList());
if(fieldsAbsent){
assertTrue(foundFields.isEmpty());
} else {
assertTrue(fieldNames.size() == foundFields.size());
}
return foundFields;
}
公共静态列表字段(最终列表字段名、最终列表错误、布尔字段){
List foundFields=errors.stream().filter(fieldError->fieldNames.contains(fieldError.getField()).collect(toList());
如果(已发送){
assertTrue(foundFields.isEmpty());
}否则{
assertTrue(fieldNames.size()==foundFields.size());
}
返回foundFields;
}
它应该检查一个列表是否(部分)包含在另一个列表中
我想返回结果,无论测试是否成功。有没有办法做到这一点,或者assertTrue/assertFalse是否总是立即退出?您的方法应该返回值或验证数据。不要混合使用。你做到了,现在你遇到了一个问题:) 更好地利用
assertEquals(fieldsAbsent.size() , foundFields.size());
方法应该返回值或验证数据。不要混用。你做到了,现在你遇到了一个问题:) 更好地利用
assertEquals(fieldsAbsent.size() , foundFields.size());
因为它的信息量更大。你不能两全其美。你不能既有蛋糕又吃 要么您正在使用众多JUnit“断言”中的一个,要么您的代码不会抛出异常 含义:
assert()
的本质是在其条件不满足时抛出
因此答案是:你必须弄清楚你的需求。如果您希望在某些情况下抛出该测试,则保留
断言。如果您希望始终返回结果,则可以删除这些调用。您不能同时使用这两种方法。你不能既有蛋糕又吃
要么您正在使用众多JUnit“断言”中的一个,要么您的代码不会抛出异常
含义:assert()
的本质是在其条件不满足时抛出
因此答案是:你必须弄清楚你的需求。如果您希望在某些情况下抛出该测试,则保留断言。如果希望始终返回结果,则删除这些调用。代码应该可以正常工作。如果不满足条件,断言将引发异常。如果您不想这样做,也许您希望打印消息而不是使用断言。您可以捕获AssetOnError并对其不做任何操作。如果AssetTrue的结果失败,为什么要忽略它?您的代码应该可以正常工作。如果不满足条件,断言将引发异常。如果您不想这样做,也许您想打印一条消息而不是使用断言。您可以捕获AssetOnError并对其不做任何处理。如果AssetTrue失败,为什么要忽略它的结果?谢谢,这是一种很好的组合方式。:)谢谢,这是一种很好的组合方式。:)
assertEquals(fieldsAbsent.size() , foundFields.size());