JUnit文件结构,最佳实践(帮助类放置)

时间:2015-09-29 09:38:42

标签: java junit gradle

既定标准

我整理了我的代码,以便我的test - 文件夹与我的main - 文件夹具有相同的包。我的测试类与我的类名称相同,但附加了 Test

到目前为止一切顺利。

问题

我发现自己在我的util文件夹中创建了一个test - 包,在我的项目中。在那里我保留了一些项目特定的“测试辅助类”。

src  
│
└───main
    │   
    ├───java
    │   │
    │   ├─── myPackage
    │        MyClass.java
    │        AnotherClass.java
    │
    ├───test
        │
        ├─── myPackage
        │    MyClassTest.java
        │    AnotherClassTest.java
        │
        ├─── util
             NiceTestUtil.java

“问题”是我讨厌不对称。 util中的test - 包,感觉它应该在util中测试相应的main - 包。相反,它包含我的助手类。

我一直在想util包可能属于main,但这也感觉不对,因为它会使主要混乱。

我使用JUnit 4.11和Gradle(如果对任何人都重要)

问题:

“测试助手类”的最佳实践,文件结构是什么?

2 个答案:

答案 0 :(得分:5)

将课程放入项目的测试部分是正确的。

唯一可以帮助您的方法:如果java.util.Optional stringToUse = java.util.Optional.of(childPage.getContentResource().getValueMap().get("jcr:description").toString()); stringToUse.ifPresent(description = stringToUse); 仅用于NiceTestUtil中的测试,则可以将该类移至该包中。

如果它可以被其他软件包的测试使用,我认为你将不得不忍受这种不对称:-)

没有什么不好的。以生产类 - >的方式具有对称性是一种很好的做法。考试班。但它并不一定适用于其他方向测试类 - >生产课。

我想到的最后一件事是:如果您的myPackage可以跨项目使用,您可以为它创建一个单独的工件(项目)并将其用作测试范围的依赖项。这将消除不对称性,但是为了维护两个项目的成本(但在将来删除可能的NiceTestUtil代码重复性)。

答案 1 :(得分:2)

我在测试部分中组织类的规则与主要部分相同:始终最小化其可见性

  • 仅适用于一个类的API(方法/类/等)应该是私有的。
  • 如果它可以被同一个包中的几个类使用,那么它应该是公共的并且属于具有包访问权限的类。
  • 如果它可以被其他包中的几个类使用,那么应该在最合适的包中的公共类中。
  • 如果它可以被多个项目使用,则应该在自己的库中。
到目前为止,这么明显。但是使用测试器API,我会遵循另外两条规则:

  • 保持包装结构与主要部件平行。
  • 让测试人员尽可能简单,因为测试人员应该可靠,如果他们很复杂,他们就应该接受测试。换句话说:支持简单性而非可重用性