gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:03:06 24 4
gpt4 key购买 nike

junit 4.11 带有 @FixMethodOrder -annotation,可以选择 MethodSorter 实现来对 junit 测试进行排序。有三个默认排序器,JVM , NAME_ASCENDINGDEFAULT .

现在,我想创建自己的 MethodSorter。任何人都可以帮助我提供有关如何做到这一点的任何指示吗?

最佳答案

简答

这并不容易,也不鼓励,因为 JUnit 不鼓励依赖测试。

长答案

有关更多信息,请参阅关于 SortMethodsWith allows the user to choose the order of execution of the methods within a test class 的扩展讨论。 .

JUnit 不鼓励人们编写依赖于其他测试的测试。 @FixMethodOrder是在 Sort test methods for predictability 的讨论后介绍的.

基本问题是 Java 7 在使用反射查找方法时,不会以一致的顺序返回它们。使用 Java 6,几乎可以保证它们会按照它们在源文件中出现的顺序返回。这已不再是这种情况。

一些测试类具有相关测试(无论是设计还是意外)。 Sort test methods for predictability至少保证这些测试将以一致的顺序执行。但是,这个排序是基于方法的hashCode,所以排序确定性,但难以预测。因此,如果您对测试的排序确实有问题,那么如何修复排序并不容易或显而易见。您必须找到具有更高/更低哈希码的测试方法名称。
@FixMethodOrder引入是为了让用户可以轻松地解决他们的订购问题,只需更改名称即可。但是,至少对我来说,它被视为临时修复,直到可以修复损坏的测试。

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

有关更多信息,我刚刚发布了 a blog post on this very subject .

关于junit - 为 junit 的 @FixMethodOrder 创建我自己的 MethodSorter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com