Arquillian + mvn clean package 而不是 mvn clean package -DskipTests 和 mvn test
Arquillian + mvn clean package instead of mvn clean package -DskipTests and mvn test
我正在学习 Arquillian,但遇到了问题。
我的测试只有在我首先使用 mvn clean package -DskipTests
生成 war 然后使用 mvn test
命令执行测试时才有效。
如果我执行 mvn clean package
然后我得到一个异常并且我的测试没有被执行:
java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive a.b.c.HelloBeanTest.createDeployment()
at a.b.c.HelloBeanTest.createDeployment(HelloBeanTest.java:32)
如果我可以直接执行我的测试而无需首先生成最终工件,那就太好了。
这是我的测试class:
@RunWith(Arquillian.class)
public class HelloBeanTest {
@EJB
private HelloBean bean;
@Deployment
public static WebArchive createDeployment() {
WebArchive war = ShrinkWrap.createFromZipFile(
WebArchive.class, new File("target/arquillian-demo-web-1.0.war")
);
System.out.println(war.toString(true));
return war;
}
@Test
public void testSay() throws Exception {
assertNotNull(bean);
System.out.println(bean.say());
System.out.println("- end -");
}
}
我试过呜呜声但它对我不起作用:
war = ShrinkWrap.create(MavenImporter.class).loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);
Arquillian 提供了一种更好的方法来做你想做的事。最佳实践是使用 ShrinkWrap maven importer 来构建和打包应用程序而不是 maven。
但在这样做之前,请三思,您是真的要测试整个应用程序(在集成或系统测试中),还是要对应用程序的较小部分或较大组件进行单元测试。最佳实践是始终只打包 运行 测试所需的整个应用程序的最小子集,仅此而已(这样更容易理解测试正在测试的内容,并且 运行s 更快).
如果您真的想在单个测试用例中测试整个应用程序,那么我上面提到的 ShrinkWrap maven importer 应该会有所帮助:
WebArchive war = ShrinkWrap.create(MavenImporter.class)
.loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);
我正在学习 Arquillian,但遇到了问题。
我的测试只有在我首先使用 mvn clean package -DskipTests
生成 war 然后使用 mvn test
命令执行测试时才有效。
如果我执行 mvn clean package
然后我得到一个异常并且我的测试没有被执行:
java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.spec.WebArchive a.b.c.HelloBeanTest.createDeployment()
at a.b.c.HelloBeanTest.createDeployment(HelloBeanTest.java:32)
如果我可以直接执行我的测试而无需首先生成最终工件,那就太好了。
这是我的测试class:
@RunWith(Arquillian.class)
public class HelloBeanTest {
@EJB
private HelloBean bean;
@Deployment
public static WebArchive createDeployment() {
WebArchive war = ShrinkWrap.createFromZipFile(
WebArchive.class, new File("target/arquillian-demo-web-1.0.war")
);
System.out.println(war.toString(true));
return war;
}
@Test
public void testSay() throws Exception {
assertNotNull(bean);
System.out.println(bean.say());
System.out.println("- end -");
}
}
我试过呜呜声但它对我不起作用:
war = ShrinkWrap.create(MavenImporter.class).loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);
Arquillian 提供了一种更好的方法来做你想做的事。最佳实践是使用 ShrinkWrap maven importer 来构建和打包应用程序而不是 maven。
但在这样做之前,请三思,您是真的要测试整个应用程序(在集成或系统测试中),还是要对应用程序的较小部分或较大组件进行单元测试。最佳实践是始终只打包 运行 测试所需的整个应用程序的最小子集,仅此而已(这样更容易理解测试正在测试的内容,并且 运行s 更快).
如果您真的想在单个测试用例中测试整个应用程序,那么我上面提到的 ShrinkWrap maven importer 应该会有所帮助:
WebArchive war = ShrinkWrap.create(MavenImporter.class)
.loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);