使用InSequence批注时,arquillian UnsupportedOperationException

时间:2014-08-09 13:47:49

标签: java junit jboss-arquillian

我在测试中添加@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)

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

2 个答案:

答案 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。然后,主要区别是将不可修改的集合转换为修改后的集合。