【问题标题】:What is best practice to develop protractor tests开发量角器测试的最佳实践是什么
【发布时间】:2018-03-20 08:16:09
【问题描述】:

我正在为我的 Angular 5 应用程序(使用 Angular CLI 构建)构建量角器测试。我的问题是构建测试需要花费大量时间 - 每次运行 ng e2e 时,我都需要等到应用程序编译完成。这种情况经常发生,因为我的代码中有很多错误选择器不正确。

我觉得我做错了什么。一定有一种方法可以更快地进行量角器测试……我说的对吗?

【问题讨论】:

  • E2E 测试通常比单元测试慢。如果您想避免在测试运行中启动应用程序,例如如果你已经在运行ng serve,你可以看看in the docs是如何运行的。
  • @jonrsharpe - 查看文档(我仍然不清楚),请您发布更详细的答案 - 这样会更清楚吗?
  • 如果您的问题是 “我如何停止 ng e2e 为应用程序提供服务”,这在文档中。如果是“我如何加快量角器测试”,这似乎太宽泛了,肯定需要minimal reproducible example 的相关测试。
  • 我的问题是:有没有办法在不编译代码的情况下运行 e2e?
  • 呃,不,该应用程序必须在某处运行才能运行浏览器测试。

标签: angular protractor angular-cli


【解决方案1】:

要跳过 Angular 应用程序编译过程,请将量角器安装为全局:

    npm install -g protractor
    webdriver-manager update

以正常方式提供应用程序 ng serve 并在项目文件夹中运行量角器,命令行:

    proctractor

您也可以在“脚本”部分修改文件 package.json 添加行为:

    "scripts": {
       ...
       "protractor": "protractor"
    },

然后您可以在其他命令行提示符下运行量角器测试:

    npm run protractor

此外:要运行与特定名称匹配的测试,您可以调用:

    protractor --grep "test name"

如果你想对测试名称和套件名称更严格,你可以使用^$--grep 选项,但你应该知道:套件名称和测试名称是用空格连接的。因此,要从不同套件运行特定测试,请运行以下命令:

protractor --grep "^Suite name1 test name1$|^Suite name2 other test name2$"

【讨论】:

  • 这应该是选择的答案。
【解决方案2】:

这完全正常。 E2E 测试不需要在每次提交时运行。
最好在发布或标记之前运行它们。
一旦到位,您只会在代码发展时更改它们。
在我的项目中,他们需要大约 3 分钟才能通过 80 次测试。

【讨论】:

  • 感谢您的回答,但我仍然认为如果您能让量角器运行得更快会更好,因为所有其他 angular-cli 工具(如实时重新加载)旨在节省开发人员时间
  • Protractor 无法运行得更快,因为它必须构建和启动应用程序。它将帮助您找到回归。
  • 你能分享你的测试吗@Pmb,当我尝试运行超过 1 时我遇到问题。提前谢谢你
【解决方案3】:

在您拥有实时环境的情况下,例如在运行的 Web 应用中,您可以设置量角器以针对实时应用运行。我的情况是,我永远不需要对已编译的应用程序进行服务和运行,因为我们有多个环境,而且我没有针对生产环境运行测试。在这种情况下,通常根本不需要时间来开发和运行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多