将单元测试嵌套在它测试的类中而不是在另一个(外部)类中的目的是什么?

mat*_*t b 1 java junit unit-testing

我一直在寻找一个特定的开源库,其中所有单元测试都被定义为他们测试的类中的静态嵌套类,例如:

public class Foo {

    public int bar() { ... }

    public static class UnitTest {
        @Test
        public void testBar() { ... }
    }
}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样做的项目或Java代码库,我对它背后的想法非常好奇.

  • 除了FooTest在另一个源文件夹中有一个单独的类之外,这个模式有什么优势src/test/java吗?

  • 这是使用Gradle作为构建工具的项目约定吗?

mat*_*t b 5

正如Jon Skeet建议的那样,我在相关项目的文档中找到了答案:

Hystrix将其所有单元测试作为内部类而不是单独的/ test /文件夹.

为什么?

  • 低摩擦
  • 上下文
  • 封装
  • 重构
  • 自我记录

有关推理的更多信息可以在这篇博客文章中找到:JUnit Tests as Inner Classes