我在测试中添加@InSequence
注释时收到错误:
java.lang.UnsupportedOperationException at java.util.Collections中的$ UnmodifiableList $ 1.设置(Collections.java:1412) 在java.util.Collections.sort(Collections.java:234)at org.jboss.arquillian.junit.Arquillian.getChildren(Arquillian.java:71) 在 org.junit.runners.ParentRunner.getFilteredChildren(ParentRunner.java:426) 在 org.junit.runners.ParentRunner.getDescription(ParentRunner.java:351) 在org.junit.runners.Suite.describeChild(Suite.java:123)at com.intellij.junit4.IdeaSuite.describeChild(IdeaSuite.java:68)at at com.intellij.junit4.IdeaSuite.getChildren(IdeaSuite.java:85)at org.junit.runners.ParentRunner.getFilteredChildren(ParentRunner.java:426) 在org.junit.runners.ParentRunner.filter(ParentRunner.java:379)at org.junit.runner.manipulation.Filter.apply(Filter.java:97)at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:37)
当我在没有这个注释的情况下运行测试时,一切正常。知道什么是错的吗?
答案 0 :(得分:4)
问题出在JUnit上。我使用版本4.12-beta-1,它在此方法中返回不可修改的列表:
public List<FrameworkMethod> getAnnotatedMethods(
Class<? extends Annotation> annotationClass) {
return Collections.unmodifiableList(getAnnotatedMembers(methodsForAnnotations, annotationClass, false));
}
班级org.junit.runners.model.TestClass
。
我降级到版本JUnit 4.11并且所有测试都在没有注释@InSequence的情况下运行。
答案 1 :(得分:0)
和我一样。即使是Junit的4.12最终版本。作为我的解决方法,我扩展了Arquillian类并覆盖了方法getChildren。然后,主要区别是将不可修改的集合转换为修改后的集合。