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

问题描述

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

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

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

测试>>main>>java>>com>>foo>>SampleTest.java

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

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

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

测试>>main>>java>>com>>foo>>SampleTest.java

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

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

标签: javajunitpowermockito

解决方案


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

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

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

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

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

您还可以参考有关组织测试的Junit FAQ 。

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


推荐阅读