【问题标题】:Debug Source Code while Running UnitTests在运行单元测试时调试源代码
【发布时间】:2018-11-06 07:57:03
【问题描述】:

我有 Java 开发人员的背景,我可以在我的 SourceCode 中使用断点并运行 UnitTests 来命中它们。我现在在 Angular/Typescript 环境中尝试同样的方法,但我只能在我的测试代码中打断点。

源代码:

1) export class SomeClass {
2)   someMethod() {
3)*    doit;
4)   }
5) }
  • 断点未命中

测试代码:

1) describe('SomeClass', () => {
2)   it('test someMethod()', () => {
3)     SomeClass someClass = new SomeClass();
4)*    someClass.someMethod();
5)   }
6) }
  • 断点命中

我首选的编辑器是 Visual Studio Code,但如果它可以在 IntelliJ/Webstorm IDE 中工作,我也很高兴。

软件包版本是:
- 角 5.2.5
- 茉莉花 2.8.0
- 茉莉花核 2.8.0
- 业力 3.0.0
- 业力铬发射器 2.1.1
- 业力-cli 1.0.1
- 业力茉莉花 1.1.1

【问题讨论】:

  • 使用 IntelliJ,您可以放置​​断点并运行调试模式,这将起作用。否则,您可以在您希望代码停止的地方写debugger;,最后,在浏览器的开发工具中,您可以打开源代码并直接在其中放置断点(例如在Chrome中,F12,Source选项卡, Ctrl + P 打开想要的文件)
  • 你试过marketplace.visualstudio.com/…了吗?我很满意。
  • @trichetriche 是的,这适用于 Intellij。不知道为什么我的其他测试在我尝试的时候没有停止在源代码中。我已经使用了浏览器解决方案,但为此您需要一个正在运行的应用程序,我想简单地调试到 UnitTest-Level 上的服务。
  • @ChatterOne 我已经安装了它,但我想在 UnitTest 级别上调试我的服务,而不是在应用程序在 Chrome 中运行时。
  • @CodeChimpy 不,您不需要正在运行的应用程序;测试时,您有一个正在运行的浏览器,可以是休闲浏览器(默认)或无头浏览器。随意的,一个测试应用程序将打开,您将能够在规范和角度文件中放置断点。这就是我调试大多数应用程序的方式,而且我在测试时没有正在运行的应用程序:)

标签: angular unit-testing debugging jasmine


【解决方案1】:

我这样做的方式是,我运行我的测试是观察:ng test --watch true,然后添加一个调试

  • 在我的浏览器上启动业力:http://localhost:9876/
  • 点击右边的调试选项,或者直接到http://localhost:9876/debug.html?
  • 然后,在调试器中打开调试器,并在 代码和/规范

【讨论】:

  • 我正在使用 ChromeHeadless 运行测试,我想在 UnitTest 级别进行调试,而不是使用正在运行的应用程序。
  • 上面的方法是针对单元测试的,而不是应用级别的(我假设应用级别,你的意思是e2e)。当你这样做时,这只是测试一个spec 文件。此外,这将在CHromeHeadless 中运行,它会在 chrome 浏览器中启动的唯一原因是因为通常设置了--remote-debugging-port=9222。如果未设置,Chrome 将无法打开。因此,IRL,您将使用 hedaless 进行测试,但对于调试,您仍然可以使用 Chrome
猜你喜欢
  • 2021-05-09
  • 2011-05-05
  • 2012-11-28
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多