找人帮你做PPT的网站,Soho外贸常用网站,四川省建设厅官网站,哪个网站旅游攻略做的最好在过去的几年中#xff0c;Apache Maven已成为Java和Java EE项目的事实上的构建工具。 但是从两年前开始#xff0c; Gradle便获得了越来越多的用户。 在我之前的文章#xff08; http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html #xff09;之后#xff0… 在过去的几年中Apache Maven已成为Java和Java EE项目的事实上的构建工具。 但是从两年前开始 Gradle便获得了越来越多的用户。 在我之前的文章 http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html 之后在这篇文章中您将看到如何使用Gradle使用Java EE编写集成测试Arquillian 。 Gradle是类似于Ant或Maven的构建自动化工具但是引入了基于Groovy的DSL语言而不是XML。 因此您可能希望生成文件是Groovy文件。 您可以阅读我以前的文章 http://www.lordofthejars.com/2015/10/gradle-and-java-ee.html 了解如何安装Gradle 。 为了编写Java EE的集成测试事实上的工具是Arquillan。 如果您想了解Arquillian是什么可以在 http://arquillian.org/guides/getting_started/ 或《 Arquillian In Action》一书中获得《入门指南》 。 要开始使用Arquillian 您需要添加Arquillian依赖项它以BOM的形式出现。 Gradle不支持现成的BOM人工制品但是您可以使用dependency-management-plugin Gradle插件来支持定义BOM 。 而且Gradle提供了添加除默认源之外的更多测试源集的可能性在Maven中默认源集是src / test / java和src / test / resources 。 这个想法是您可以定义一个新的测试源集以将所有集成测试放入其中。 通过这种方法每种测试都可以清楚地分为不同的源集。 您可以在Gradle脚本中编写Groovy代码来实现此目的也可以只使用gradle-testsets-plugin 这是最简单的方法。 因此要注册这两个插件依赖项和测试集您需要在build.gradle脚本文件中添加下一个元素 buildscript {repositories {jcenter()}dependencies {classpath io.spring.gradle:dependency-management-plugin:0.5.3.RELEASEclasspath org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.2.0}
}apply plugin: io.spring.dependency-management
apply plugin: org.unbroken-dome.test-sets 现在该添加Arquillian依赖项了。 您需要添加Arquillian BOM和两个依赖关系一个依赖关系设置我们将Arquillian与JUnit一起使用另一个依赖关系将Apache TomEE应用程序服务器设置为在测试运行期间部署应用程序的目标。 用的ArquillianTomEE和Java EE的依赖可能看起来像的build.gradle dependencyManagement {imports {mavenBom org.arquillian:arquillian-universe:1.0.0.Alpha1}
}dependencies {testCompile group: org.arquillian.universe, name: arquillian-junit, ext: pomtestCompile group: org.apache.openejb, name: arquillian-tomee-embedded, version:1.7.2testCompile group: junit, name: junit, version:4.12providedCompile group: org.apache.openejb,name: javaee-api, version:6.0-6} 最后您可以通过添加下一部分将新的集成测试文件夹配置为源集 testSets {integrationTests
} 其中integrationTest是测试集的名称。 testSets自动创建并配置下一个元素 src / integrationTests / java和src / integrationTests / resources作为有效的源集文件夹。 名为integrationTestsCompile依赖关系配置其从testCompile延伸另一种称为integrationTestRuntime从testRuntime延伸。 一个名为integrationTests的Test任务它将运行集中的测试。 一个名为IntegrationTestsJar的Jar任务用于打包测试。 请注意您可以将IntegrationTests更改为任何其他值例如intTests并且Gradle会将先前的元素自动配置为在testSets中设置的值例如src / intTests / java 例如测试任务将称为intTests 。 下一步是在IntegrationTests测试集中使用Arquillian创建集成测试。 例如用于验证您可以在REST API中发布颜色并在调用GET方法时将其返回的Arquillian测试如下所示 RunWith(Arquillian.class)
public class ColorServiceIntegrationTest {Deploymentpublic static WebArchive createDeployment() {return ShrinkWrap.create(WebArchive.class).addClasses(ColorService.class);}ArquillianResourceprivate URL webappUrl;Test RunAsClientpublic void postAndGet() throws Exception {// POST{final WebClient webClient WebClient.create(webappUrl.toURI());final Response response webClient.path(color/green).post(null);assertThat(response.getStatus(), is(204));}// GET{final WebClient webClient WebClient.create(webappUrl.toURI());final Response response webClient.path(color).get();assertThat(response.getStatus(), is(200));final String content slurp((InputStream) response.getEntity());assertThat(content, is(green));}}public static String slurp(final InputStream in) throws IOException {final ByteArrayOutputStream out new ByteArrayOutputStream();final byte[] buffer new byte[1024];int length;while ((length in.read(buffer)) ! -1) {out.write(buffer, 0, length);}out.flush();return new String(out.toByteArray());}} 您现在可以通过简单地执行gradlew integrationTests来运行集成测试 您会注意到如果您运行gradlew build 那么集成测试任务将不会运行。 发生这种情况是因为未在默认的构建生命周期内注册任务。 如果要添加IntegrationTests任务以在构建期间自动执行则需要添加下一行 check.dependsOn integrationTestintegrationTest.mustRunAfter test 确保集成测试在检查任务之前运行并且如果集成测试失败则检查任务会使构建失败并确保在集成测试之前运行单元测试。 这样可以确保即使集成测试失败也可以运行单元测试。 因此现在当您运行gradlew build gradlew build执行集成测试。 最后如果您正在运行JaCoCo插件进行代码覆盖会发生什么 您将获得两个JaCoCo文件一个用于单元测试执行另一个用于IntegrationTests执行。 但是您可能希望看到两者的汇总代码覆盖率报告都运行在一个文件中因此您可以在执行各种测试后检查应用程序的代码覆盖率。 要实现它您只需要添加下一个任务 task jacocoRootTestReport(type: JacocoReport) {sourceSets sourceSets.mainexecutionData files([$buildDir/jacoco/test.exec,$buildDir/jacoco/integrationTests.exec])reports {xml.enabled falsecsv.enabled false}
} 在这种情况下您将创建一个任务该任务汇总test.exec文件来自单元测试和IntegrationTests.exec的覆盖范围结果来自集成测试。 为了生成报告您需要在运行Gradle时显式调用jacocoRootTestReport任务。 因此编写用于运行Java EE测试的Gradle脚本非常简单而更重要的是最终脚本文件看起来非常紧凑且易读而无需严格遵守任何静态约定。 翻译自: https://www.javacodegeeks.com/2015/11/java-ee-gradle-integration-tests.html