尝试断言某些值时显示java.lang.UnsupportedOperationException
我使用下面的代码在测试脚本中断言文本。但每次点击此代码时,它都会给出UnsupportedOperationException错误尝试断言某些值时显示java.lang.UnsupportedOperationException,java,Java,我使用下面的代码在测试脚本中断言文本。但每次点击此代码时,它都会给出UnsupportedOperationException错误 public static void verifyEquals(Object actual, Object expected) { try { Assert.assertEquals(actual, expected); } catch(Throwable e) { addVerific
public static void verifyEquals(Object actual, Object expected) {
try {
Assert.assertEquals(actual, expected);
} catch(Throwable e) {
addVerificationFailure(e);
}
}
public static List<Throwable> getVerificationFailures() {
List verificationFailures = verificationFailuresMap.get(Reporter.getCurrentTestResult());
return verificationFailures == null ? new ArrayList() : verificationFailures;
}
private static void addVerificationFailure(Throwable e) {
StackTraceElement[] error = e.getStackTrace();
List<StackTraceElement> errors = Arrays.asList(error);
verificationFailuresMap.put(Reporter.getCurrentTestResult(), errors);
List verificationFailures = getVerificationFailures();
verificationFailuresMap.put(Reporter.getCurrentTestResult(), verificationFailures);
verificationFailures.add(e);
}
publicstaticvoidverifyequals(实际对象,预期对象){
试一试{
Assert.assertEquals(实际、预期);
}捕获(可丢弃的e){
添加验证失败(e);
}
}
公共静态列表getVerificationFailures(){
List verificationFailures=verificationFailuresMap.get(Reporter.getCurrentTestResult());
返回verificationFailures==null?新建ArrayList():verificationFailures;
}
私有静态void addVerificationFailure(可丢弃的e){
StackTraceElement[]错误=e.getStackTrace();
列表错误=数组.asList(错误);
verificationFailuresMap.put(Reporter.getCurrentTestResult(),errors);
List verificationFailures=getVerificationFailures();
verificationFailuresMap.put(Reporter.getCurrentTestResult(),verificationFailures);
验证失败。添加(e);
}
有人能帮我吗?这就是问题所在:
List verificationFailures = getVerificationFailures();
verificationFailuresMap.put(Reporter.getCurrentTestResult(), verificationFailures);
verificationFailures.add(e);
您正在调用List。在数组的结果中添加。asList
。您不能这样做,因为数组是的结果。asList
是数组的一个视图-您不能添加或删除元素
另外-除擦除外-该列表是一个列表
-它由一个StackTraceeElement[]
支持。添加一个可丢弃的是什么意思
如果删除将列表放入映射中的代码,然后在添加之前再次将其取回,则更容易发现问题:
private static void addVerificationFailure(Throwable e) {
StackTraceElement[] error = e.getStackTrace();
List<StackTraceElement> errors = Arrays.asList(error);
verificationFailuresMap.put(Reporter.getCurrentTestResult(), errors);
errors.add(e);
}
私有静态void addVerificationFailure(可丢弃的e){
StackTraceElement[]错误=e.getStackTrace();
列表错误=数组.asList(错误);
verificationFailuresMap.put(Reporter.getCurrentTestResult(),errors);
添加(e);
}
现在,由于尝试将一个可丢弃文件添加到列表中,因此在编译时此操作将失败。但是,即使您试图添加stackTraceeElement
,由于数组,它仍然会失败。asList
不支持add
确实不清楚您想做什么,但您需要重新考虑……它在哪一行抛出异常?测试代码不应该像这样复杂。Quis custodiet ipsos custodes?为什么要使用原始类型?+1,或者换句话说(如果我没有弄错的话),Arrays.asList()
返回一个固定大小的列表-我们不能向固定大小的列表中添加元素。感谢Jon的回复。我实际上遵循了这个链接:在测试脚本中使用软断言。但是代码片段不起作用,所以我做了一些更改。另外,我对Java还不太了解。@alfasin:这是问题之一,是的。@ss:这至少解释了实际的
/预期的
顺序-TestNG使用这种方法,而JUnit(更常见的框架)使用相反的顺序。