学校网站结构图,网站的布局结构,建设监理网站,线上如何做推广从前面的部分恢复 第1 部分 #xff0c; 第2 部分 #xff0c; 第3 部分 #xff0c; 第4部分 #xff0c; 这是第一篇“额外”的帖子#xff0c;基于我正在此系列博客文章上“构建”的Maven JavaEE7演示项目。 我们已经定义了一个坚实的结构和一些模块。 在这样的应用程… 从前面的部分恢复 第1 部分 第2 部分 第3 部分 第4部分 这是第一篇“额外”的帖子基于我正在此系列博客文章上“构建”的Maven JavaEE7演示项目。 我们已经定义了一个坚实的结构和一些模块。 在这样的应用程序中一个非常常见的情况是使用Arquillian JUnit 这是一个上帝赐予的框架它使我们能够使用“真实的”应用程序服务器对EJB服务进行单元测试最有可能与我们将要使用的相同。部署到。 我实际上遵循的是这里的基本设置指南不同之处在于我将Wildfly 8.1设置为嵌入式容器来承载单元测试。 Widlfy 8.1是一个功能强大的JavvaEE7容器因此我可以安全地测试所有功能。 Arquillian心态和Maven 为了在Maven化的项目中采用Arquillian您需要了解的基本知识之一是以下实际上作为依赖项实现的术语思想。 当然您需要Arquillian框架/库想象一下这是一辆新车但缺少它的引擎。 前部是空的。 您需要一个Arquillian Container Adapter 假设您需要在汽车的前部安装某种占位符 例如将要使用的框架以便可以“安装”发动机。 您需要一个真正的容器应用程序服务器这是我们要安装在汽车中的引擎 。 您需要JUnit 这是您的汽车将要运行并进行测试的“ 测试 轨道 ”。 您需要您的代码您的EJB这些代码将被放置在汽车中并在Junit轨道上测试行程的乘客。 定义对父pom的依赖 正如我们在前4个帖子中已经详细说明的那样父pom是定义要在我们的应用程序中使用的依赖项及其库版本的地方。 请记住上面的术语列表让我们开始并更新父pom的dependencyManagement部分。 junit-version4.11/junit-versionarquillian-version1.1.4.Final/arquillian-versionarquillian-wildfly-version8.1.0.CR2/arquillian-wildfly-versionarquillian-transaction-version1.0.1.Final/arquillian-transaction-version/propertiesdependencyManagementdependenciesdependencygroupIdjavax/groupIdartifactIdjavaee-api/artifactIdversion${javaee-api-version}/version/dependency!-- -JUNIT--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit-version}/version/dependency!-- rquillian itself--dependencygroupIdorg.jboss.arquillian/groupIdartifactIdarquillian-bom/artifactIdversion${arquillian-version}/versionscopeimport/scopetypepom/type/dependency!-- this is in an extention to arquillian it is optional--dependencygroupIdorg.jboss.arquillian.extension/groupIdartifactIdarquillian-transaction-bom/artifactIdversion${arquillian-transaction-version}/versiontypepom/typescopeimport/scope/dependency!-- this is container adapter for wildfly--dependencygroupIdorg.wildfly/groupIdartifactIdwildfly-arquillian-container-embedded/artifactIdversion${arquillian-wildfly-version}/version/dependency!-- this is the wildfly emb.container - BUT eventually it is not a fully blown emb.container--dependencygroupIdorg.wildfly/groupIdartifactIdwildfly-embedded/artifactIdversion${arquillian-wildfly-version}/version/dependency/dependencies/dependencyManagement 有关上述片段的一些技巧 一些依赖项是pom类型和作用域导入。 实际上这是一起定义依赖项组的一种特殊情况。 pom类型依赖性表示这是在此定义下分组在一起的一组单个库。 您只需要定义该超级pom您将继承其中的各个依赖项。 在Maven术语中这种依赖性分组称为“ BOM ”或也称为“ 物料清单 ”。 Arquillian由几个具体的库和依赖项组成而不是一个一个地定义每个库如果定义arquillian-bom则结果相同。 “ arquillian-transaction-bom ”是一个可选的依赖项您可以不定义它它为Arquillian引擎和您的测试中添加了额外的功能。 最著名的“额外”功能之一是“ Transactional” arquillian注释。 在此处或此处查看详细信息。 Wildfly和JBoss的特殊情况。 您会注意到依赖项“ wildfly-embedded ”并假设它是Wildfly应用程序服务器的“ 嵌入式 ” uber jar版本例如Glassfish的版本。 最终不是这样这是人们在尝试使用Wildfly设置Arquillian时常犯的错误。 为了使整个工作正常进行您需要下载“真实的”应用程序服务器。 请看以下部分将在哪里解决这个特殊情况。 为Arquillian和测试配置我们的ejb模块 在演示应用程序中我们已将大多数EJB服务“编码”在名为sample-ejb的模块上。 因此我们需要在其pom中添加额外的配置以便在该模块的测试阶段“ 触发 ” junit arquillian测试。 大多数配置将在此pom上执行以覆盖Widlfly的这种“ 特殊 ”情况即未作为完全吹入的嵌入式容器提供。 因此为了使整个机制正常工作我们需要在测试阶段告诉Maven下载Wildfly.zip例如使用浏览器进行此操作将其解压缩到某个地方然后将Arquillian指向路径。 完成后rAquillian将接任。 事先下载wildfly服务器 下面的配置写在sample-services pom我们的“ EJB服务”模块中 pluginartifactIdmaven-dependency-plugin/artifactIdexecutionsexecutionidunpack/idphaseprocess-test-classes/phasegoalsgoalunpack/goal/goalsconfigurationartifactItemsartifactItemgroupIdorg.wildfly/groupIdartifactIdwildfly-dist/artifactIdversion8.1.0.Final/versiontypezip/typeoverWritefalse/overWriteoutputDirectorytarget/outputDirectory/artifactItem/artifactItems/configuration/execution/executions/plugin 有关上述片段的一些技巧 我们使用maven-dependency-plugin 我们指示插件在Maven生命周期的“过程测试类”阶段启动以及在执行“解压”目标时启动。 因此在Maven开始运行测试之前配置的上述部分将已将Wildfly 8.1下载并解压缩到类路径中。 使用maven运行测试– surfire插件 同样下面的代码是sample-services.pom的一部分。 我们实际上配置了Maven Surefire插件它是执行Junit-Arquilian测试的插件。 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdconfiguration!-- Fork every test because it will launch a separate AS instance --forkModealways/forkModesystemPropertyVariablesjava.util.logging.managerorg.jboss.logmanager.LogManager/java.util.logging.managerjboss.home${project.basedir}/target/wildfly-8.1.0.Final/jboss.homemodule.path${project.basedir}/target/wildfly-8.1.0.Final/modules/module.path/systemPropertyVariablesredirectTestOutputToFilefalse/redirectTestOutputToFile/configuration/plugin 有关上述片段的一些技巧 Surefire为单元测试提供了执行环境。 在我们的案例中我们有Junit-Arquillian进行的测试。 为了使Arquillian正确地初始化自身并标识容器我们需要将其作为系统参数传递给下载应用程序服务器的路径。 请记住wildfly / jboss是一个特例。 该容器将已经下载到/ target文件夹中。 在sample-services模块上添加所需的依赖项 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependencydependencygroupIdorg.jboss.arquillian.junit/groupIdartifactIdarquillian-junit-container/artifactIdscopetest/scope/dependencydependencygroupIdorg.wildfly/groupIdartifactIdwildfly-arquillian-container-embedded/artifactIdscopetest/scope/dependencydependencygroupIdorg.wildfly/groupIdartifactIdwildfly-embedded/artifactIdscopetest/scope/dependencydependencygroupIdorg.jboss.arquillian.extension/groupIdartifactIdarquillian-transaction-jta/artifactIdscopetest/scope/dependency创建样本测试 package gr.javapapo;import org.jboss.arquillian.container.test.api.Deployment;import org.jboss.arquillian.junit.Arquillian;import org.jboss.shrinkwrap.api.ShrinkWrap;import org.jboss.shrinkwrap.api.asset.EmptyAsset;import org.jboss.shrinkwrap.api.spec.JavaArchive;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import javax.ejb.EJB;/*** Created by papo on 5/31/14.*/RunWith(Arquillian.class)public class DemoArquillianTest {EJBUserServices dummyService;Deploymentpublic static JavaArchive createDeployment() {return ShrinkWrap.create(JavaArchive.class).addClass(UserServices.class).addAsManifestResource(EmptyAsset.INSTANCE, beans.xml);}Testpublic void testSaysHello() {Assert.assertEquals(hello,dummyService.sayHello());}}我们完了 在样本父文件夹级别下键入 mvn clean package 该示例的完整代码可在以下bitbucket标签上找到。 翻译自: https://www.javacodegeeks.com/2014/06/java-ee7-and-maven-project-for-newbies-part-5-unit-testing-using-arquillian-wildfly-8.html