我有一个maven项目(github),广泛使用Maven集成测试verifier。Maven验证器集成测试没有发现测试中的神器
测试是指我正在测试的项目。例如,这pom作用:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<dependencies>
<dependency>
<!-- My project which customizes the plugin. -->
<groupId>com.google.security</groupId>
<artifactId>fences-maven-enforcer-rule</artifactId>
<version>1.2-beta-SNAPSHOT</version>
</dependency>
</dependencies>
...
如果这种依赖性是相对路径../../../../../pom.xml。
然后我的junit test使用Verifier
来运行集成测试。
// testProjectName is the basename of the directory
// containing the POM above.
File testDir = ResourceExtractor.simpleExtractResources(
getClass(), "/" + testProjectName);
Verifier verifier = new Verifier(
testDir.getAbsolutePath(),
null, debug == Debug.VERBOSE, true /* forkJvm */);
// Clean up after previous runs.
verifier.deleteArtifacts("test");
Result goalResult = Result.PASS;
try {
verifier.executeGoal("verify");
} catch (@SuppressWarnings("unused") VerificationException ex) {
goalResult = Result.FAIL;
}
我可以通过做mvn install -DskipTests=true && mvn test
测试这一点,但就是不太理想,因为如果我更改代码,而无需重新安装,我结束了竞选对手了过期的版本测试,因为有人下载项目第一次不能只做mvn test
。
是否有一些方法来调整POM或junit TestCase,以便依赖关系在刚编译到target/classes
的类上?
不知道我明白这个问题。 'fences-maven-enforcer-rule'是你想在测试中出现的神器吗?为什么要声明'maven-enforcer-plugin'?你能否扩展你想做什么,你在做什么以及有什么问题? – Tunaki
@Tunaki,好问题。我的项目('fences-maven-enforcer-rule')定义了一个自定义['EnforcerRule'](https://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html)。我正在测试该规则,执行者插件和各种配置之间的交互。 –
等等,所以你说'fences-maven-enforcer-rule'不能访问正在构建的项目中的类。问题是什么? – Tunaki