从前面的部分恢复

第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-version>2.1.1</shrinkwrap.bom-version><!-- jbdc drivers --><postgreslq.version>9.1-901-1.jdbc4</postgreslq.version>
...<!-- shrinkwrap BOM-->
<dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-bom</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type><scope>import</scope></dependency><!-- shrinkwrap dependency chain--><dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type></dependency><!-- arquillian itself--><dependency><groupId>org.jboss.arquillian</groupId><artifactId>arquillian-bom</artifactId><version>${arquillian-version}</version><scope>import</scope><type>pom</type></dependency><!-- the JDBC driver for postgresql --><dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId><version>${postgreslq.version}</version></dependency>

有关上述更改的一些注意事项:

  • 为了避免依赖项之间的任何潜在冲突,请确保在Arquillian BOM之上定义ShrinkWrap BOM

现在,在sample-services(pom.xml)上 ,托管的项目是简单测试,我们需要引用其中一些依赖项。

<dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><scope>test</scope><type>pom</type></dependency><dependency><groupId>postgresql</groupId><artifactId>postgresql</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名称中的标准命名java:jboss / datasources / datasourceName
  • 一旦读取了web.xml文件的内容,应用程序服务器将自动部署并配置新的数据源。

这是我们的persistence.xml


以上注意事项

  • 确保2个JNDI条目在数据源定义和persistence.xml中都相同
  • 当然,用于postGresql的Hibernate方言是不同的
  • 高亮显示的行是Wildfly 8.1所需要的特殊设置,如果您要一口气部署它,则需要设置数据源,jdbc驱动程序和代码。 它提示应用程序服务器首先初始化和配置数据源,然后初始化EntityManager。 如果您已经部署/配置了数据源,则不需要此设置。

在pom中定义配置文件

在sample-services pom.xml中,添加以下部分。 这是我们的配置文件定义。

<profiles><profile><id>h2</id><build><testResources<testResource><directory>/resources-h2</directory><includes><include>**/*</include></includes></testResource></testResources></build></profile><profile><id>postgre</id><build><testResources><testResource><directory>/resources-postgre</directory><includes><include>**/*</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,应用程序服务器就会选择该条目,并将在java:jboss / 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

针对新手的Java EE7和Maven项目–第7部分相关推荐

  1. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

  2. 针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

    为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务器上的部署并细化我的配置. ...

  3. java ee maven_针对新手的Java EE7和Maven项目–第8部分

    java ee maven 第一部分 , 第2部分 , 第3部分 , 第4部分 , 第5部分 , 第6部分 , 第7部分 第8部分 自上一篇文章以来,这一系列教程已经有很长时间了. 是时候恢复并在我们 ...

  4. java ee maven_针对新手的Java EE7和Maven项目–第6部分

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5部分 在上一篇文章(第5部分)中,我们发现了如何使用Arquillian(我们的EJB ...

  5. 针对新手的Java EE7和Maven项目–第8部分

    第1部分 , 第2部分 , 第3部分 , 第4部分 , 第5部分 , 第6部分 , 第7部分 第8部分 自上一篇文章以来,这一系列教程已经有很长时间了. 是时候恢复并在我们的简单项目中添加新功能了. ...

  6. java ee maven_针对新手的Java EE7和Maven项目–第7部分

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分 在上一篇文章(第6章)中,我们发现了如何使用Arquillian ...

  7. 针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争

    从第一部分恢复 第1部分 我们刚刚定义了父 pom. 一种特殊的pom类型,它最终定义了我们的应用程序将要使用的库. 它还配置了所有用于包装我们应用程序每个模块的Maven工具. 您可以在此处 签出 ...

  8. ejb的maven_针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块

    ejb的maven 从前面的部分恢复 第1部分 第2部分 我们在第三部分继续介绍,我们已经有一个父pom,并且已经为我们的war模块定义了pom. 在我们的原始设置中,我们定义了我们的应用程序将包含一 ...

  9. java ee maven_针对新手的Java EE7和Maven项目–第5部分–使用Arquillian / Wildfly 8进行单元测试...

    java ee maven 从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4部分 , 这是第一篇"额外"文章,基于我在该系列博客文章中"构建&quo ...

最新文章

  1. 非关系型数据库-NoSQL(Redis)
  2. 算法系列8《Base64》
  3. C++ 重载机制实现原理
  4. hiho一下 第六周 Hihocoder #1038 : 01背包
  5. TensorFlow2-自编码器
  6. Jetty - Container源码分析
  7. FileZilla Pro32位64位官方安装版 v3.50.0
  8. 长痘痘部位和对应的毛病
  9. vue一个页面用两个以上页面 时时刷新
  10. 数学建模之常见的优化模型
  11. VC++调试错误的解决方案
  12. 基于springboot+mysql的房地产中介管理系统
  13. 拼多多砍价小程序源码/流量主系列微信小程序源码
  14. 那款软件可以测试平板电脑性能,性能测试和应用体验
  15. excel锁定单元格不能修改_3步让表格只能输入不能修改,保护表格格式,快速搞定数据汇总...
  16. 学海无涯提供100-300M免费全能空间申请
  17. axure侧弹层遮罩_Axure实现遮罩效果
  18. 树莓派连接笔记本电脑
  19. html边框是啥意思,css中border是什么意思
  20. HTML技术 360度产品展示,360°产品展示

热门文章

  1. 学院派 实践派 计算机科学与技术,饶旻现场为boss所在企业“挑错”
  2. 查看电脑重启日志_系统日志看硬盘故障图文教程,电脑日志查看磁盘硬盘坏道问题方法...
  3. ROC和AUC介绍以及如何计算AUC
  4. java数据库编程——执行查询操作(二)
  5. java线程——中断线程+线程状态+线程属性(优先级)
  6. HDU1176(DP)
  7. java开发展望怎么写_Java开发趋势:2019年展望
  8. java登录界面命令_Java命令行界面(第8部分):Argparse4j
  9. java编写应用程序_为您的Java应用程序编写数据驱动的测试
  10. 内存 增量数据持久_内存中数据模型和大数据持久性