在处理当前版本的PowerMock时,我们遇到了一个问题。我们正准备发布对Mockito 2的支持,这与Mockito 1完全不同。因此,我们为PowerMock添加了一个新模块:" powermock-api-mockito2" 。
第一个问题是 powermock-api 模块包含两个子模块:
一次只能编译一个模块,因为每个模块都依赖于mockito的特定版本,如果将两个版本的mockito添加到类路径中,则无法编译。
API模块pom.xml
<profiles>
<profile>
<id>mockito</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>mockito</module>
</modules>
</profile>
<profile>
<id>mockito2</id>
<modules>
<module>mockito2</module>
</modules>
</profile>
</profiles>
第二个问题是我们在运行时根据API模块有其他模块(如junit和testng)(因为类在运行时加载,只有一个工件可以在类路径中使用)。因此,在运行测试时,只应包含一个模块作为依赖项。
对于构建/测试时间,我已使用配置文件解决了它。我创建了两个配置文件&#34; mockito&#34;和&#34; mockito2&#34;并且构建运行两次。
根pom.xml
<profiles>
<profile>
<id>mockito</id>
<properties>
<mockito.version>1.10.19</mockito.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>mockito2</id>
<properties>
<mockito.version>2.0.42-beta</mockito.version>
</properties>
</profile>
</profiles>
powermock-modules-test-mockito pom.xml (但我们还有其他模块也取决于这种方式)
<profiles>
<profile>
<id>mockito</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>mockito2</id>
<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
</profiles>
个人资料的依赖树&#34; mockito&#34;并进行验收测试
[INFO] org.powermock:powermock-modules-test-mockito:pom:1.6.5-SNAPSHOT
[INFO] +- org.powermock.tests:powermock-tests-utils:jar:1.6.5-SNAPSHOT:test
[INFO] | +- org.powermock:powermock-core:jar:1.6.5-SNAPSHOT:compile
[INFO] | | +- org.powermock:powermock-reflect:jar:1.6.5-SNAPSHOT:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:test
[INFO] +- org.assertj:assertj-core:jar:3.4.1:test
[INFO] +- org.powermock:powermock-api-mockito-common:jar:1.6.5-SNAPSHOT:compile
[INFO] | +- org.mockito:mockito-core:jar:1.10.19:compile
[INFO] | | \- org.objenesis:objenesis:jar:2.2:compile
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.5-SNAPSHOT:compile
[INFO] \- org.powermock:powermock-api-mockito:jar:1.6.5-SNAPSHOT:compile
个人资料的依赖树&#34; mockito&#34;并进行验收测试
[INFO] org.powermock:powermock-modules-test-mockito:pom:1.6.5-SNAPSHOT
[INFO] +- org.powermock.tests:powermock-tests-utils:jar:1.6.5-SNAPSHOT:test
[INFO] | +- org.powermock:powermock-core:jar:1.6.5-SNAPSHOT:compile
[INFO] | | +- org.powermock:powermock-reflect:jar:1.6.5-SNAPSHOT:compile
[INFO] | | \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] | \- javax.servlet:servlet-api:jar:2.5:test
[INFO] +- org.assertj:assertj-core:jar:3.4.1:test
[INFO] +- org.powermock:powermock-api-mockito-common:jar:1.6.5-SNAPSHOT:compile
[INFO] | +- org.mockito:mockito-core:jar:2.0.42-beta:compile
[INFO] | | +- net.bytebuddy:byte-buddy:jar:1.2.1:runtime
[INFO] | | \- org.objenesis:objenesis:jar:2.2:compile
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] | \- org.powermock:powermock-api-support:jar:1.6.5-SNAPSHOT:compile
[INFO] \- org.powermock:powermock-api-mockito2:jar:1.6.5-SNAPSHOT:compile
在释放电动摇枕之前,这很好用。 maven发布插件与名为发布的配置文件一起使用,但问题是我们要发布对&#34; mockito&#34;的支持。和&#34; mockito2&#34;同时。但由于配置文件冲突,我们无法在理智的时候应用这两个配置文件。发布过程应该只执行一次,因此我无法运行release
for&#34; mockito&#34;然后另一个用于&#34; mockito2&#34;。
我知道一个看起来像这样的解决方法:
但我再次预计第6步会遇到很大的麻烦。
我如何解决这些问题?是否可以使用不同的依赖项运行相同的测试?第6步是否可行?