Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试类应该存储在项目中的什么位置?_Java_Eclipse_Unit Testing_Project Structure - Fatal编程技术网

Java 测试类应该存储在项目中的什么位置?

Java 测试类应该存储在项目中的什么位置?,java,eclipse,unit-testing,project-structure,Java,Eclipse,Unit Testing,Project Structure,我在工作中使用RAD/Eclipse构建所有web项目,我想知道您通常将测试的*.class文件存储在哪里 我所有的web项目都有两个源文件夹:“src”用于源代码,“test”用于测试用例。为两个源文件夹生成的*.class文件当前位于WebContent/WEB-INF/classes文件夹下 我想将test*.class文件与src*.class文件分开,原因有二:- 将它们存储在WebContent/WEB-INF/类中并在生产中部署它们是没有意义的 Sonar和其他一些静态代码分析工

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

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

我想将test*.class文件与src*.class文件分开,原因有二:-

  • 将它们存储在WebContent/WEB-INF/类中并在生产中部署它们是没有意义的
  • Sonar和其他一些静态代码分析工具无法生成准确的静态代码分析,因为它考虑了我糟糕但正确的测试用例代码
现在,我有以下输出文件夹:-

  • “src”源文件夹编译为WebContent/WEB-INF/classes文件夹
  • “测试”源文件夹编译到目标/测试类文件夹
现在,我从RAD那里得到这个警告:-

Broken single-root rule: A project may not contain more than one output folder.
因此,基于Eclipse的IDE似乎更喜欢一个项目=一个输出文件夹,但它为我提供了一个选项,可以从“构建路径”对话框中为我的附加源文件夹设置自定义输出文件夹,然后它对我咆哮

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

更新

我附上了我的一个项目的构建路径对话框的屏幕截图。我使用的是RADV7.5.5。看起来你们中的大多数人都是用Maven构建项目的。我喜欢使用Maven,除了工作之外,我在任何地方都使用Maven,因为它不能很好地使用Websphere。如果你知道如何让一个Mavenized项目与Webpshere一起工作,一定要让我知道


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


我选择了一个单独的测试项目与源项目共存


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

假设正在测试的类是
com.example.MyClass
。我将把测试
MyClassTest
放在同一个包
com.example
,但放在一个单独的文件夹
test

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

src->targetmaven(或Ivy)可以为您处理这个问题。我希望我可以在我的工作项目中使用Maven,但事实是,它在Websphere中一开始就不能很好地工作,或者至少,我不能让Maven很好地使用它。我当前的项目结构类似于Maven项目的bastardized版本,它看起来像Maven项目,但事实并非如此。我有一个ANT脚本,它调用“mvn war:exploded”,然后通过编程将所有JAR复制到动态WEB项目中的WebContent/WEB-INF/lib中。现在,RAD认为几个输出文件夹是一个潜在的问题,这让我很沮丧。这相当尴尬,但我在上面的帖子中附加我的截图时遇到了问题。无论如何,我认为这可能是拉德的问题。我在EclipseGalileo中尝试了同样的方法,是的,我没有得到任何警告。顺便说一句,我使用的是RADV7.5.5。@limc:听起来确实是RAD的“问题”。奇怪的是,我知道可以在Maven项目中使用RAD(这就是我在Eclipse中所做的)。但是,也许人们在这样做的时候会得到这个警告,我不能确认。好吧,我终于在我的帖子中看到了截图。RAD可以很好地与Maven配合使用,前提是它不是一个web项目。我无法从Maven项目中获得针对Websphere的热部署,而且我目前手动创建IBMXMI文件,以使我的JNDI在Websphere中工作。当然,整个“黑客”的事情是如此脆弱,所以知道这整个事情将工作时,我搬到7日在未来。我的目标是使用Maven设置我的项目,并针对Jetty进行开发,然后我将使用它并在Websphere中部署它。。。请祈祷。@limc我不知道RAD的这种“限制”(我猜这是一种软限制,或者它完全不允许,但我不知道后果如何)。顺便说一下,我截图上的示例项目是一个webapp项目。关于另一部分(在Tomcat/Jetty/GlassFish上进行开发),这是非常常见的,尤其是在使用慢速容器时。如果您没有使用特定的东西(即,如果您使用的是标准的JavaEE东西),那么应该可以。只需定期在目标容器上部署,以避免任何意外。另请参阅。的可能副本