单元测试
来源: |
时间:2018-11-09
|
|

运行测试

介绍

JHipster提供了大量测试,每个生成的应用程序都具有:

  • 使用Spring Test Context框架进行集成测试。

  • 使用Jest进行 UI测试

可选地,JHipster还可以生成:

我们在生成这些测试时有两个目标:

  • 帮助每个JHipster用户遵循最佳实践,因为我们认为测试是每个应用程序中非常有用的部分

  • 验证生成的内容是否正确。所以,即使你不打算在所有使用这些测试,这样做只是一个./mvnw clean testgulp test后生成您的应用程序是知道,如果一切正常的一个好办法。如果您认为测试是浪费时间,那么您可以自由地忽略这些测试!

所有这些测试都将在标准Maven src/test文件夹中生成

集成测试

集成测试使用Spring Test Context框架完成,位于src/test/java文件夹中。JHipster将推出一个特定的Spring测试上下文,它将在所有测试中重复使用,如下所示:

  • 您的Spring bean应该是无状态且线程安全的,因此可以在不同的测试套件中重复使用。

  • 如果比为每个测试启动新的Spring上下文要快得多,那么为所有测试启动一个Spring上下文。

此Spring测试上下文将使用特定的测试数据库来执行其测试:

  • 如果使用SQL数据库,JHipster将启动内存中的H2实例,以便使用临时数据库进行集成测试。Liquibase将自动运行,并将生成数据库模式。

  • 如果您使用的卡珊德拉,JHipster将推出使用一个内存卡珊德拉实例CassandraUnit

  • 如果您使用的MongoDB,JHipster将推出使用内存中的MongoDB实例de.flapdoodle.embed.mongo

  • 如果您使用Elasticsearch,JHipster将使用Spring Data Elasticsearch启动内存中的Elasticsearch实例。

  • 如果你使用Couchbase,JHipster将使用Couchbase TestContainers与Docker一起推出容器化的Couchbase版本

这些测试可以直接在IDE中运行,方法是右键单击每个测试类,或运行./mvnw clean test(或者./gradlew test如果运行Gradle)。

限制:如果生成的实体启用了验证,则JHipster不会根据验证规则生成正确的值。这些规则可能非常复杂,例如,如果使用正则表达式模式,这是不可能的。在这种情况下,测试将无法通过验证,并且测试中使用的默认值将需要手动更改,以便它们可以传递验证规则。

UI测试

使用JHipster进行UI测试有两种风格:使用Jest进行单元测试,使用Protractor进行集成测试。默认情况下仅提供Jest,但如果您希望对应用程序进行良好的测试覆盖,我们建议您同时使用这两个工具。

笑话

UI单元测试位于src/test/javascript/spec文件夹中。他们使用Jest

这些测试将模拟对应用程序的REST端点的访问,因此您可以测试UI层而无需启动Java后端。

  • 这些测试可以使用npm test

  • 提示:如果你想专注于一个单一的测试从改变模块的描述describe('...', function() {fdescribe('...', function() {和玩笑只会运行这个测试。

量角器

UI集成测试使用Protractor完成,位于src/test/javascript/e2e文件夹中。

这些测试将启动Web浏览器并像真实用户那样使用应用程序,因此您需要运行一个真正的应用程序,并使用其数据库设置。

这些测试可以使用npm run e2e

性能测试

性能测试使用Gatling完成,位于src/test/gatling文件夹中。它们是为每个实体生成的,并允许使用大量并发用户请求测试每个实体。

要运行Gatling测试,您必须先安装Gatling:请转到Gatling下载页面并按照其中的说明进行操作。请注意,我们不允许从Maven或Gradle运行Gatling,因为它会导致其他插件出现类路径问题(主要是因为使用了Scala)。

注意我们目前仅支持Gatling 2.x. 您可以直接从maven central下载最新的2.x版本

警告!目前,这些测试没有考虑您可能对您的实体强制执行的验证规则。此外,用于创建与另一个实体具有所需关系的实体的测试也将无法开箱即用。无论如何,您将需要根据您的业务规则更改这些测试,因此以下是一些改进测试的提示:

  • 在正在运行的应用程序上,转到Administration > Logs屏幕,然后org.springframework进入debug模式。例如,您将看到验证错误。

  • 正常使用该应用程序并打开Chrome console log:您将能够看到REST请求及其所有参数,包括HTTP标头。

要在微服务应用程序上运行Gatling测试,您必须:

  • 运行注册表

  • 运行网关

  • 运行微服务应用程序

  • 然后,您可以运行Gatling测试

行为驱动开发(BDD)

行为驱动开发(BDD)可以使用Cucumber及其JVM实现

Gherkin功能必须写在您的src/test/features目录中。


J

提交
查看更多评论
没有更多评论