测试类应该存储在项目中的哪个位置?

时间:2010-05-25 15:22:48

标签: java eclipse unit-testing project-structure

我使用RAD / Eclipse在工作中构建我的所有Web项目,我很想知道您通常在哪里存储测试的* .class文件。

我的所有Web项目都有2个源文件夹:“src”代表源代码,“test”代表测试用例。两个源文件夹生成的* .class文件当前都放在WebContent / WEB-INF / classes文件夹下。

我想从src * .class文件中分离测试* .class文件有两个原因: -

  • 将它们存储在WebContent / WEB-INF / classes中并将它们部署到生产中是没有意义的。
  • Sonar和其他一些静态代码分析工具无法生成准确的静态代码分析,因为它考虑了我糟糕而又正确的测试用例代码。

所以,现在,我有以下输出文件夹: -

  • “src”源文件夹编译为WebContent / WEB-INF / classes文件夹。
  • “test”源文件夹编译为target / test-classes文件夹。

现在,我收到RAD的警告: -

Broken single-root rule: A project may not contain more than one output folder.

因此,基于Eclipse的IDE似乎更喜欢一个项目=一个输出文件夹,但它为我提供了一个选项,可以从“构建路径”对话框为我的附加源文件夹设置自定义输出文件夹,然后它对我咆哮。

我知道我可以自己禁用此警告,但我想知道你是如何处理的。

更新

我附上了我的一个项目的构建路径对话框的屏幕截图。我正在使用RAD v7.5.5。看起来大多数人都是用Maven构建你的项目。我喜欢使用Maven,我在其他任何地方使用Maven但是工作因为它与Websphere不相称。如果您知道如何让Mavenized项目与Webpshere合作,请告诉我。

alt text http://www.imagebanana.com/img/89q9o46t/s1.jpg

3 个答案:

答案 0 :(得分:3)

我选择了一个单独的 TEST 项目与 SOURCE 项目共存。

通过这种方式,您可以为测试项目添加额外的依赖项,例如,仅需要进行测试的一些第三方库,而不是在常规项目中添加此依赖项。

答案 1 :(得分:2)

假设正在测试的班级是com.example.MyClass。我会将测试MyClassTest放在同一个包com.example中,但放在另一个文件夹test中:

        module
        /     \
      src   -> target <-
      /  \
   main   test
     |      |
    java   java
     |       |
     com    com
     |        |
    example  example
     |        | 
MyClass.java MyClassTest.java

这是Maven's Standard Directory Layout

但您可以将测试和主类的类文件编译到同一输出文件夹target

答案 2 :(得分:1)

我不知道RAD,但我可以告诉你,我所有的项目都使用一个单独的输出文件夹来测试和测试资源,在Eclipse下没有任何问题:

alt text http://www.imagebanana.com/img/9c8m79s/screenshot_008.png