如何解决如何测试设置自定义存储库的 Gradle 插件?
我有一个用 Java 编写的自定义 Gradle 插件,用于设置自定义 Maven 存储库等:
project.getRepositories().maven(repository -> {
repository.setName(NAME);
repository.setUrl(URL);
repository.mavenContent(MavenRepositoryContentDescriptor::releasesOnly);
});
我现在从事集成测试(使用 Spock 和 Groovy),主要是做 project.getPluginManager().apply(CustomPlugin.class)
并检查 Project
实例是否设置正确。
我测试上述逻辑的问题是 ::releasesOnly
位:
def "repositories are set up correctly"() {
given:
def repositories = project.repositories
expect:
repositories.size() == 1
repositories[0] instanceof DefaultMavenArtifactRepository
def repoReleases = repositories[0] as DefaultMavenArtifactRepository
repoReleases.name == NAME
repoReleases.url.toString() == URL
// How to test whether the repository will be used only to fetch releases and not snapshots?
}
问题是:如何测试存储库是否仅用于获取版本而不用于获取快照?
目前我的想法是:
- 监视
repositories
并确保应用了正确的 lambda。 它会变得有点棘手,但应该可以工作。 我发现这种方法的问题在于我测试的是实现而不是测试需求。 - 我可以跳过测试这条线。 意外删除它会引入严重错误的可能性很小。 这很实用,但不完全正确。
- “最佳”方法似乎是提示
Project
实例搜索依赖项并观察行为。 但到目前为止,即使对 Gradle 有所了解,我也不知道如何简洁地(并在本地)模拟这一点。
有人可以建议实施第三种情况的最不痛苦的方法,或者指出为什么其他方法更可取?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。