使用黄瓜进行多级测试

时间:2019-09-18 11:07:28

标签: java automated-tests cucumber-jvm

我对我的软件进行了一些BDD测试,这些测试在Gherkin中声明并使用Cucumber JVM运行。 Cucumber JVM测试可以在我的应用程序的几个级别(层)的任何中运行:通过前端(使用Testcontainers的HTML),通过后端(通过REST API(使用Testcontainers)通过HTTP进行JSON传输),使用模拟HTTP服务器通过后端(使用Java方法调用的Spring Boot测试)测试工具,或者通过服务层(对于Java测试)(对于某些测试)

但是,当然,我想在某种程度上测试我的应用程序的那几层。这意味着我想要重复进行BDD测试。我不想在所有级别上运行所有BDD测试。而且我不想仅通过前端进行测试,因此更容易调试测试失败。在某些级别上,我只想做几个关键测试,以表明应用程序的各层已正确粘合在一起。

如果我天真的实现了一些重复的Cucumber JVM测试,则Cucumber将抱怨重复的步骤定义。如何进行重复的测试,而不会让Cucumber被重复的步骤定义所混淆?

这是与reusing step definitions截然不同的问题:在不同的级别上,步骤的代码完全不同。它与testing variants of and application不同,在https://www.w3schools.com/php/php_arrays.asp中,不同的构建环境使用不同的步骤定义。

1 个答案:

答案 0 :(得分:1)

为此,您必须在多个级别上实现步骤定义。因此,对于应该在一个测试中对UI进行操作但在另一个测试中对API进行操作的步骤;您需要2个步骤定义。

如果将这些步骤定义分组到不同的文件中,则可以创建指向不同“胶水”类(步骤定义文件)的不同运行程序。

您可以将可以在不同级别之间共享的步骤定义分组到一个文件中,供所有运行程序使用。

也就是说,我想知道您是否需要在应用程序的多个级别上测试同一件事(即使只是一个子集)?考虑一下每个测试的价值,以及这将如何改变您要验证的内容。 例如: 如果一种方法在不同的输入上提供不同的输出,则可以在uni测试中对其进行测试。 要测试该结果是否正确显示,可以在UI或API级别进行测试。 如果用户界面中还有其他显示方式,则可能是对用户界面级别的测试。