如何让 Chutzpah 测试适配器 运行 我在 Azure DevOps 管道构建上的 QUnit 测试?

How to get a Chutzpah Test Adapter to run my QUnit tests on an Azure DevOps pipeline build?

它只在我的机器上运行 - 在使用 Azure DevOps 之前,我只是安装了这个 Chutzpah VSIX 'Test Adapter' add-on 以便 运行 我的 QUnit 测试。我的 test.js 使用 Chutzpah 的参考语法.. 所以 Chutzpah 将在 IDE 的 Test Explorer 中出现测试,我可以 运行 它们像其他任何一样。

Azure Pipeline Docs - says right here 他们的 VSTest@2 任务 运行ner 支持 运行ning Chutzpah 单元测试:

Use this task in a build or release pipeline to run unit and functional tests (Selenium, Appium, Coded UI test, and more) using the Visual Studio Test Runner. Other than MSTest-based tests, test frameworks that have a Visual Studio test adapter, such as xUnit, NUnit, Chutzpah, can also be executed.

但未发现我的 QUnit / Chutzpah 测试 - 如果我将此解决方案堆栈上传到 Azure DevOps 存储库,并使用 ASP.NET 的默认 YAML。 . 它发现了几个单元测试并 运行 成功地 但是 none 我的 javascript/QUnit 测试

我猜我的 Chutzpah VSIX 附加组件不在 Azure DevOps 构建代理机器上,我需要做一些事情才能让它工作 - 但是,什么?我目前没有使用 Chutzpah nuget pkg - 应该吗?


更新...

根据这个 Art of Simplicity blog post 我确实需要安装 Chutzpah NuGet 包。

This NuGet package contains all required DLL’s and tooling to be able to run your JavaScript tests. By using this approach you don’t need to install the Chutzpah test adapter on your build server or specify the location of your test adapter. The TFS Build testing tools will automatically detect the required DLL’s and load the test adapter for you.

我是 Azure DevOps(及其前身)世界的新手,没有调整我的 Google-fu 来合并 'TFS' 这样的术语 - 所以也许我需要开始搜索基于此。


更新... 根据上面的博客 post,我现在在我的 web 项目的根目录中添加了一个 chutzpah.config 文件(它不在我的 repo 的根目录中。我的 repo 有几个嵌套在不同位置的解决方案水平)。 仍然没有运气让它在管道服务器上构建

对我来说关键是我必须将 Chutzpah NuGet 包添加到我的 Web 项目中,然后告诉构建代理/测试运行程序在哪里可以找到 Chutzpah 'stuff'(请参阅 pathtoCustomTestAdapters在下面的 yaml 中切换)more here

这是我的 .yml 文件:

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    testAssemblyVer2: '$(Build.SourcesDirectory)/MyApp/trunk/MyWebAppProject/Scripts/tests/test**.js'
    pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/MyApp/trunk/packages/Chutzpah.4.4.3/tools/'

尽管在某些地方被告知要添加 .runsettings 文件,但这似乎对我的 Azure DevOps 构建代理不起作用。它实际上混淆了它!

FWIW - 这是 chutzpah.json 我放入我的 Web 项目的根目录(这不是我的 repo 的根目录)

{
  "Framework": "qunit",
  "FrameworkVersion": "1",
  "TestHarnessLocationMode": "TestFileAdjacent", 
  "References": [
    {
      "Path": "Scripts/qunit.js",
      "IsTestFrameworkFile": true
    },
    {
      "Path": "Content/qunit.css",
      "IsTestFrameworkFile": true
    }
  ],
  "Tests": [
    {
      "Path": "Scripts/tests/",
      "ExpandReferenceComments": true,
      "Excludes": [ "fake_razor.js", "fake_razor_search.js","MyCorp.Spa.Routing.Callbacks.js" ]
    }
  ]
}

我不知道添加这个 .json 是否对我的成功至关重要。