Unit testing 当测试基础设施位于src/test/java文件夹中的其他项目中时,使用gradle进行UnitTest

Unit testing 当测试基础设施位于src/test/java文件夹中的其他项目中时,使用gradle进行UnitTest,unit-testing,junit,gradle,multi-project,Unit Testing,Junit,Gradle,Multi Project,有两个java项目A和B,构建引擎是gradle 这是一个多项目,a依赖于B A:葛雷德尔先生 ... dependencies { compile project (':B') } ... B在src/main/java中有核心代码,在src/test/java中有测试代码。 在src/test/java中还有一些测试基础设施类,比如加载测试数据 gradle:B:测试工作正常 A-Project中的测试使用B-Project中的测试基础结构类,这对于eclipse是可以的,但对于g

有两个java项目A和B,构建引擎是gradle

这是一个多项目,a依赖于B

A:葛雷德尔先生

...
dependencies {
    compile project (':B')
}
...
B在
src/main/java
中有核心代码,在
src/test/java
中有测试代码。 在
src/test/java
中还有一些测试基础设施类,比如加载测试数据

gradle:B:测试
工作正常

A-Project中的测试使用B-Project中的测试基础结构类,这对于eclipse是可以的,但对于gradle则不行。因为B-Project上构建的jar文件依赖项只包括
src/main/java
中的类

我们得到一个错误:

com.aaa.SomeClassFromAAAA.java:42: error: cannot find symbol
import com.bbb.InfrastructureTestClassFromBBB;

解决方案是什么?

这在Gradle论坛上讨论。其思想是使用测试类构建JAR,并使其对项目可见。还有一些注释说明了为什么IDE很难做到这一点


另一种方法是将测试基础结构类移动到另一个项目的主要源中。这假设它们不依赖于A的主要来源。您可以在Gradle的代码库中看到类似的内容(
int*-test*
folders in)。

Thx,本文也非常有用: