使用InSequence批注时,arquillian UnsupportedOperationException

我在测试中添加@InSequence注释时出错:

java.util.Collections上的java.lang.UnsupportedOperationException $ UnsetifiableList $ 1.set(Collections.java:1412)at 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 com.intellij.junit4.IdeaSuite.getChildren(IdeaSuite.java:85)at org.junit.runners.ParentRunner .getFilteredChildren(ParentRunner.java:426)位于org.junit的org.junit.runners.ParentRunner.filter(ParentRunner.java:379)org.junit.runner.manipulation.Filter.apply(Filter.java:97)。 internal.requests.FilterRequest.getRunner(FilterRequest.java:37)

当我在没有这个注释的情况下运行测试时,一切正常。 知道什么是错的吗?

问题出在JUnit上。 我使用版本4.12-beta-1,它在此方法中返回不可修改的列表:

 public List getAnnotatedMethods( Class annotationClass) { return Collections.unmodifiableList(getAnnotatedMembers(methodsForAnnotations, annotationClass, false)); } 

org.junit.runners.model.TestClass

我降级到版本JUnit 4.11并且所有测试都在没有注释@InSequence的情况下运行。

和我一样。 即使是Junit的4.12最终版本。 作为我的解决方法,我扩展了Arquillian类并覆盖了方法getChildren。 然后,主要区别是将不可修改的集合转换为修改后的集合。