我们是否应该像在 .Net 中那样在 java 中创建 Java 源代码和 Junit 测试作为不同的项目?

Should we create Java source code and Junit test as different project in java like they do in .Net?

在Java中,我看到了在同一个项目的不同包中同时拥有test和source的做法。但是现在有人让我将 Java 源代码作为一个不同的项目,并从主项目中取出测试并将其作为一个单独的测试项目,就像在 .net 中一样,并在项目中提供该源 jar 的引用。

请参阅以下是我们遵循的一般做法

src>>main>>java>>com>>foo>>Sample.java

test>>main>>java>>com>>foo>>SampleTest.java

但是现在有人让我创建一个项目

src>>main>>java>>com>>foo>>Sample.java

作为一个项目,然后像 Java 项目一样进行测试,将上述 jar 的引用添加到您的测试项目中(将该 jar 添加到库中或将依赖项添加到您的构建文件中)以执行测试用例。

test>>main>>java>>com>>foo>>SampleTest.java

您认为这是一个可行的解决方案吗?

我们应该遵循这样的做法吗?

既然你提到了Java,基于Java的项目通常会在同一个项目(maven/gradle)中进行Junit测试。您的源代码和测试代码结构如下所示:

src
│  
── main
     └── java
         └── com
              └── foo
│                 ├──Sample.java
│     
│       
└── test
     └── java
          └── com
               └── foo
                   └── SampleTest.java

在同一个项目中使用源代码和 junit,您将能够更好地与代码和单元测试相关联。这种方法允许测试访问被测 类 的所有 public 和包可见方法。

这也是标准 maven/gradle 目录布局的一部分,其中项目相同但文件夹不同。

根据需要,一组通用的集成或功能测试可以存在于单独的项目中。

也可以参考Junit FAQ里面说的组织测试

保持简单,您可以通过在同一个项目中保留单元测试开始,如果确实需要考虑将其分开。