如果外部文件被修改,Gradle强制测试运行



我使用gradle在一个具有不同模块的大项目中运行我的JUnit测试,其中测试缓存非常有价值,因为我不想为每个代码更改运行每个测试。然而,我有几个测试,读取其他模块文件,如配置文件,这可能会导致测试失败,如果他们被改变,然而,因为没有一个硬gradle依赖于测试和这些文件之间的测试运行是缓存的,因此它可能导致一个成功的运行,而在现实中,配置文件的代码更改可能会破坏测试。

我知道我可以通过使用cleanTest跳过gradle测试缓存,但我不想为我所做的每个构建丢失缓存功能。所以我想告诉它,他们依赖于其他模块文件,如果他们不改变测试运行必须被缓存。对如何实现这一点有什么建议吗?

您应该指定依赖项来实现它。

假设项目结构是这样的:

.
|__ module-a/
|    |__ src/main/resources/aa/bb/config.json
|    ___ build.gradle
|
|__ module-b/
|    |__ src/test/java/com/example/DemoTest.java
|    ___ build.gradle
|
___ settings.gradle

添加依赖到module-b/build.gradle:

...
dependencies {
testImplementation(project(':module-a'))
}

配置可以加载到DemoTest:

...
class DemoTest {
@Test
void qq() {
InputStream inputStream = this.getClass().getResoureAsStream("/aa/bb/config.json");
...
}
}

那么对module-a内部配置的任何更改都将导致module-b内部的测试重新运行。

相关内容

  • 没有找到相关文章