企业网站怎么做产品图片轮播,设计比例网站,房产怎么创建网站,国内网站建设费用联盟从前面的部分恢复 第1 部分 #xff0c; 第2 部分 #xff0c; 第3 部分 #xff0c; 第4 部分 #xff0c; 第5 部分 #xff0c; 第6部分 在上一篇文章#xff08;第6章#xff09;中#xff0c;我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。… 从前面的部分恢复 第1 部分 第2 部分 第3 部分 第4 部分 第5 部分 第6部分 在上一篇文章第6章中我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。在上一篇文章中我们做出了一个简单的配置决定我们使用了与Wildfly 8.1捆绑在一起的内部H2数据库配置的数据源称为ExampleDS。 但是真正的DBMS呢 在这篇文章中我们将扩展以前的工作使用相同的原理并 在我们的本地主机上对正在运行的PostgreSQL进行测试 使用Arquillian Offer的ShrinkWrap APi的一些非常好的功能。 先决条件 您需要在本地安装PostgreSQL RBDMS 我的示例基于在localhost上运行的服务器数据库名称为papodb 。 添加更多依赖 最终我们需要在样本父代pom中添加更多依赖项。 其中一些与Arquillian有关特别是ShrinkWrap Resolvers功能稍后会详细介绍。 因此我们需要将其添加到父pom中。 xml如下 shrinkwrap.bom-version2.1.1/shrinkwrap.bom-version!-- jbdc drivers --postgreslq.version9.1-901-1.jdbc4/postgreslq.version
...!-- shrinkwrap BOM--
dependencygroupIdorg.jboss.shrinkwrap.resolver/groupIdartifactIdshrinkwrap-resolver-bom/artifactIdversion${shrinkwrap.bom-version}/versiontypepom/typescopeimport/scope/dependency!-- shrinkwrap dependency chain--dependencygroupIdorg.jboss.shrinkwrap.resolver/groupIdartifactIdshrinkwrap-resolver-depchain/artifactIdversion${shrinkwrap.bom-version}/versiontypepom/type/dependency!-- arquillian itself--dependencygroupIdorg.jboss.arquillian/groupIdartifactIdarquillian-bom/artifactIdversion${arquillian-version}/versionscopeimport/scopetypepom/type/dependency!-- the JDBC driver for postgresql --dependencygroupIdpostgresql/groupIdartifactIdpostgresql/artifactIdversion${postgreslq.version}/version/dependency 有关上述更改的一些注意事项 为了避免依赖项之间的任何潜在冲突请确保在Arquillian BOM之上定义ShrinkWrap BOM 现在在sample-servicespom.xml上 托管的项目是简单测试我们需要引用其中一些依赖项。 dependencygroupIdorg.jboss.shrinkwrap.resolver/groupIdartifactIdshrinkwrap-resolver-depchain/artifactIdscopetest/scopetypepom/type/dependencydependencygroupIdpostgresql/groupIdartifactIdpostgresql/artifactId/dependency重组我们的测试代码 在前面的示例中我们的测试很简单我们仅使用了特定的测试配置。 由于我们将测试应用程序打包为jar因此只生成了一个test-persistence.xml文件而没有web.xml文件。 现在我们将测试存档升级为战争。 当涉及捆绑和部署企业应用程序时JavaEE7中的战争包装已成为第一手公民。 与前面的示例的主要区别在于我们希望保留以前的设置这意味着使用Wildfly上的内部H2进行测试以及对真实的RDBMS服务器进行新的设置测试。 因此我们需要维护2套配置文件并利用Maven配置文件功能根据我们的模式对它们进行相应打包。 如果您不熟悉Maven请确保查看配置文件的概念。 为每个配置文件添加单独的配置 因此我们的测试资源请注意这些资源位于src / test / resources下如下所示。 两种情况都有差异。 h2的test-persistence.xml指向ExampleDS数据源其中postgre上的那个指向我们在web.xml中定义的新数据源 请从下面的git链接中查看实际代码。 这就是我们在web.xml中定义数据源的方式 以上注意事项 JNDI名称中的标准命名javajboss / datasources / datasourceName 一旦读取了web.xml文件的内容应用程序服务器将自动部署并配置新的数据源。 这是我们的persistence.xml 以上注意事项 确保2个JNDI条目在数据源定义和persistence.xml中都相同 当然用于postGresql的Hibernate方言是不同的 高亮显示的行是Wildfly 8.1所需要的特殊设置如果您要一口气部署它则需要设置数据源jdbc驱动程序和代码。 它提示应用程序服务器首先初始化和配置数据源然后初始化EntityManager。 如果您已经部署/配置了数据源则不需要此设置。 在pom中定义配置文件 在sample-services pom.xml中添加以下部分。 这是我们的配置文件定义。 profilesprofileidh2/idbuildtestResourcestestResourcedirectory/resources-h2/directoryincludesinclude**/*/include/includes/testResource/testResources/build/profileprofileidpostgre/idbuildtestResourcestestResourcedirectory/resources-postgre/directoryincludesinclude**/*/include/includes/testResource/testResources/build/profile/profiles 根据激活的配置文件我们指示Maven在特定的子文件夹下包括并使用xml文件。 因此如果我们应用以下命令 mvn clean test -Pdb2 然后maven将在resource-h2文件夹下包含persistence.xml和web.xml我们的测试将使用内部的H2 DB。 如果我们发出 mvn clean test -Ppostgre 然后我们的测试Web存档将与本地Postgresql服务器专用的数据源定义一起打包。 编写一个简单的测试 最终我们新的JUnit测试与之前的测试没有太大不同。 这是一些关键点的屏幕截图。 上面代码的一些注意事项 Junit测试和基本注释与上一篇文章相同。 init方法再次相同我们只是创建并保留一个新的SimpleUser实体 第一个主要区别是ShrinkWrap Api的使用它利用了pom中的测试依赖项并且我们可以将JBDC驱动程序定位为jar。 找到ShrinkWrap之后请确保将其与其他资源和代码一起打包在我们的test.war中。 尽管仅打包jdbc驱动程序是不够的为了使其正常工作我们需要在服务器中存在配置数据源。 我们希望这是自动的这意味着我们不想在测试Wildfly服务器上进行任何预配置。 我们利用该功能在web.xml上定义数据源。 在代码中将其打开。 一旦扫描了web.xml应用程序服务器就会选择该条目并将在javajboss / datasources / testpostgre名称下配置一个数据源。 因此我们将驱动程序数据源定义捆绑在一起我们有一个persistence.xml指向正确的datasourc。 我们准备测试 我们的测试方法与之前的测试方法相似。 我们为H2档案修改了一些资源以便每次都打包相同的战争结构。 这意味着如果我们使用-Ph2配置文件运行测试则包含的web.xml为空因为实际上我们不需要在此处定义数据源因为该数据源已经由Wildfly进行了部署。 但是persistence.xml是不同的因为在一种情况下所定义的方言特定于H2而在另一种情况下所定义的方言特定于Postgre。 您可以遵循相同的原理并添加新的资源子文件夹为另一个RDBMS例如MySQL配置数据源添加适当的代码以获取驱动程序并将其打包。 您可以在此bitbucket repo-tag上获得此帖子的代码 。 资源资源 Shrinkwrap解析器API页面 此强大API的许多漂亮示例 定义Wildfly 8.1的数据源 翻译自: https://www.javacodegeeks.com/2014/07/java-ee7-and-maven-project-for-newbies-part-7.html