我一直在浏览一个特定的开源库,其中所有单元测试都被定义为它们测试的类内的静态嵌套类,例如:
public class Foo {
public int bar() { ... }
public static class UnitTest {
@Test
public void testBar() { ... }
}
}
我以前从未见过这样做的项目或 Java 代码库,我真的很好奇它背后的想法。
与在另一个源文件夹中拥有单独的
FooTest
类相比,这种模式有什么优势吗src/test/java
?这是使用 Gradle 作为构建工具的项目的约定吗?
正如 Jon Skeet 所建议的,我在相关项目的文档中找到了答案:
Hystrix 将所有单元测试作为内部类,而不是放在单独的 /test/ 文件夹中。
为什么?
低摩擦
有关推理的更多信息可以在这篇博文中找到:
Java 插件 的 Gradle 文档,它建议将测试保留在 src/test/java 中,所以我认为这根本不是 Gradle 特定的约定。