java - 我们是否应该像在 .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
您认为这是一个可行的解决方案吗?
我们应该遵循这样的做法吗?
解决方案
既然您提到了 Java,那么基于 Java 的项目通常会在同一个项目(maven/gradle)中进行 Junit 测试。您的源代码和测试代码结构如下所示:
src
│
── main
└── java
└── com
└── foo
│ ├──Sample.java
│
│
└── test
└── java
└── com
└── foo
└── SampleTest.java
在同一个项目中使用 source 和 junit,您将能够更好地关联代码和单元测试。这种方法允许测试访问被测类的所有公共和封装可见方法。
这也是标准 maven/gradle 目录布局的一部分,其中项目相同但文件夹是分开的。
根据需求,一组通用的集成或功能测试可以存在于单独的项目中。
您还可以参考有关组织测试的Junit FAQ 。
保持简单,您可以通过将单元测试保留在同一个项目中开始,并在确实需要时考虑将其分离。
推荐阅读
- jenkins - 詹金斯管道中的主动选择反应参考参数作为格式化的html,具有默认值
- deployment - Ansible error using `win_copy`: "Unexpected failure during module execution"
- java - jdbcTemplate 查询带有多个参数的准备好的语句
- python - 条形图上的 Matplotlib 颜色图
- android - 将位图保存在服装目录中
- android - 如何在 Android Studio 项目中同步期间禁用 *sources.jar 下载
- mysql - MySQL 更新查询不适用于 and 运算符
- elasticsearch - 使用或不使用 Logstash 过滤 Filebeat 输入
- ios - 如何克隆 BLE 设备(配置、特性等)并与其他人共享
- database - 从数据库中删除 Maximo 中的对象(表)