为junit的@FixMethodOrder创建我自己的MethodSorter

为junit的@FixMethodOrder创建我自己的MethodSorter,junit,junit4,Junit,Junit4,JUnit4.11附带了@FixMethodOrder注释,这使得选择MethodSorter实现对junit测试进行排序成为可能。有三个默认的分类器,JVM、NAME和default 现在,我想创建我自己的MethodSorter。有人能帮我指点一下怎么做吗?简短回答 这并不容易,也不鼓励这样做,因为JUnit不鼓励依赖测试 长话短说 有关详细信息,请参阅上的扩展讨论 JUnit不鼓励人们编写依赖于其他测试的测试。是在讨论之后介绍的 基本问题是Java7在使用反射查找方法时,没有以一致的顺序返

JUnit4.11附带了@FixMethodOrder注释,这使得选择MethodSorter实现对junit测试进行排序成为可能。有三个默认的分类器,JVM、NAME和default

现在,我想创建我自己的MethodSorter。有人能帮我指点一下怎么做吗?

简短回答 这并不容易,也不鼓励这样做,因为JUnit不鼓励依赖测试

长话短说 有关详细信息,请参阅上的扩展讨论

JUnit不鼓励人们编写依赖于其他测试的测试。是在讨论之后介绍的

基本问题是Java7在使用反射查找方法时,没有以一致的顺序返回方法。在Java6中,几乎可以保证它们会按照它们在源文件中出现的顺序返回。现在已经不是这样了

有些测试类具有依赖性测试,无论是设计测试还是意外测试。至少保证这些测试将以一致的顺序执行。然而,这种排序是基于该方法的哈希代码的,因此排序是确定的,但很难预测。因此,如果您确实对测试的顺序有问题,那么如何修复顺序并不容易或明显。您必须找到具有较高/较低哈希代码的测试方法名称

@引入FixMethodOrder是为了让用户只需更改名称即可轻松解决其排序问题。但是,至少对我来说,它被视为一个临时修复,直到坏掉的测试可以修复为止

还请注意,您通常可以从指定测试执行顺序,ant中也有类似的选项

更多信息,我刚刚发表