unit-testing - 如何在本地或 Jenkins 上*自动化*基于浏览器的单元测试

标签 unit-testing selenium jenkins automated-tests browser-testing

几个月来一直在寻找这个问题的答案,但仍然不知道如何实际去做 - 如何自动化在浏览器中运行的测试? Selenium 测试在后端运行,当然可以自动化,我们现在正在这样做。最近我的任务是自动化基于浏览器的单元测试,我的知识差距很大 -

我不知道该怎么做-

例如 - 自动化测试运行器如何收集在浏览器中运行的(单元)测试的测试结果和退出代码?任何人都可以解释这实际上是如何完成的以及完成它的步骤吗?

Karma 是实现这一目标的最佳工具吗?

最佳答案

您可以使用 http://phantomjs.org/ . phantomjs 是一个 headless 的网络浏览器,您可以将其视为没有 gui 的全栈网络浏览器,可用作库。与 karma 一起,您可以在不依赖任何 GUI 实现的情况下执行单元测试。
这里有一篇博文,解释了这种场景中的不同组件 http://orizens.com/wp/topics/my-setup-for-testing-js-with-jasmine-karma-phantomjs-angularjs/

意味着您可以在 headless Linux 服务器上执行您的业力单元测试。

澄清:

  • 对 phantomjs 的需求并非来自单元测试。需要 phantomjs 是因为您的 js 单元测试依赖于浏览器 api。
  • 构建代码是一个很好的设计原则,与浏览器 api 的耦合不会使所有代码困惑。尝试引入一个封装浏览器 api 依赖项的薄层。像这样,您可以在不需要 phantomjs 的情况下测试您的 js。
  • 使用 phantomjs 执行单元测试可能需要一些时间。如果你有很多单元测试,最好把对浏览器 api 的依赖分解出来。因此,您可以在不需要 phantomjs 的情况下执行更多测试,并且只有少数单元测试需要使用 phantomjs 执行。

关于unit-testing - 如何在本地或 Jenkins 上*自动化*基于浏览器的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43380822/

相关文章:

jenkins - 如何使用 Groovy 动态构建 Jenkins 管道输入参数?

Jenkins 管道测试结果分析器支持

python - Django 1.11 : What fails `pickle` in my parallel test run?

c# - Azure 的单元测试代码

Python 请求 - 模拟状态代码和响应

java - Selenium 元素可见监听器

android - Gradle connectedAndroidTest 失败并显示 "No tests found."但输出测试结果

selenium - 使用 Protractor 配置以 headless 模式运行 Firefox

selenium - 使用 Screenplay 模式而不是 Page 对象的优点/缺点是什么?

iphone - 如何在命令行中捕获 OCUnit 的测试失败/成功?