JUnit的4.11自带@FixMethodOrder
-annotation,这使得它能够选择MethodSorter的实现订购JUnit测试。 有三种默认的分类器, JVM
, NAME_ASCENDING
和DEFAULT
。
现在,我想创建自己的MethodSorter。 谁能帮我带任何指针要怎么做呢?
JUnit的4.11自带@FixMethodOrder
-annotation,这使得它能够选择MethodSorter的实现订购JUnit测试。 有三种默认的分类器, JVM
, NAME_ASCENDING
和DEFAULT
。
现在,我想创建自己的MethodSorter。 谁能帮我带任何指针要怎么做呢?
这是不容易的,而且不鼓励,因为JUnit的不鼓励相关的测试。
欲了解更多信息,请参阅扩展讨论SortMethodsWith允许用户选择的测试类中的方法执行顺序 。
JUnit的不鼓励人们写的是依赖于其他测试的测试。 @FixMethodOrder介绍以下问题进行了洽谈排序测试方法可预测性 。
最根本的问题是,Java 7中,使用反射来查找方法时,不会以一致的顺序返回。 随着Java 6中,这是相当多保证他们会在它们出现在源文件中的顺序返回。 这已不再是这种情况。
有些测试类有依赖性测试(无论是设计还是无意)。 可预测性排序的测试方法 ,至少保证了这些测试将在一致的顺序执行。 然而,这个排序是基于方法的hashCode,所以排序是确定性的,但很难预测。 所以,如果你与你的测试顺序的问题,那么它是不容易的或明显的如何解决排序。 你必须找到一种测试方法的名称具有更高/更低的hashCode。
@FixMethodOrder
引入,使用户能够轻松地解决他们的订货问题,只需通过更改名称。 但是,至少对我来说,它看作是一个临时的解决办法,直到失败的测试可以是固定的。
另请注意,您通常可以通过指定测试执行顺序万无一失 ,并有在蚂蚁类似的选项。
欲了解更多信息,我刚刚发布了关于这个主题博客文章 。