如何获得Chutzpah测试适配器以在Azure DevOps管道版本上运行我的QUnit测试?

时间:2018-11-29 05:07:46

标签: azure-devops azure-pipelines chutzpah

它只能在我的机器上运行- 在使用Azure DevOps之前,我只安装了此Chutzpah VSIX 'Test Adapter' add-on即可运行我的QUnit测试。我的test.js使用Chutzpah的参考语法..因此Chutzpah将在IDE的Test Explorer中公开测试,我可以像其他任何程序一样运行它们。

Azure管道文档-says right hereVSTest@2任务运行程序支持运行Chutzpah单元测试:

  

在构建或发布管道中使用此任务,以使用Visual Studio Test Runner运行单元测试和功能测试(Selenium,Appium,编码的UI测试等)。除了基于MSTest的测试之外,还可以执行具有Visual Studio测试适配器的测试框架,例如xUnit,NUnit,Chutzpah。

但是未发现我的QUnit / Chutzpah测试-如果我将此解决方案堆栈上传到Azure DevOps存储库,并使用ASP.NET的默认YAML,则会发现多个单元测试和成功运行它们,但是我的javascript / QUnit测试都没有

我猜,我的Chutzpah VSIX加载项没有出现在Azure DevOps构建代理计算机上,我需要做一些事情才能使其正常工作-但是,那又是什么?我目前不使用Chutzpah nuget pkg-应该吗?


更新...

根据此Art of Simplicity blog post,我确实需要安装Chutzpah NuGet软件包。

  

此NuGet程序包包含所有必需的DLL和工具,以便能够运行JavaScript测试。使用这种方法,您无需在构建服务器上安装Chutzpah测试适配器,也无需指定测试适配器的位置。 TFS Build测试工具将自动检测所需的DLL,并为您加载测试适配器。

我是Azure DevOps的新手(并且是Azure DevOps的前身),并且没有调整我的Google-fu以包含诸如“ TFS”之类的术语-所以也许我需要基于此开始搜索。


更新... 根据上面的博客文章,我现在在Web项目的根目录中添加了一个chutzpah.config文件(它不在我的仓库的根目录中。我的仓库中有多个嵌套在各个级别的解决方案)。 让它在管道服务器上构建仍然没有运气

1 个答案:

答案 0 :(得分:0)

对我来说,关键是我必须将Chutzpah NuGet软件包添加到我的Web项目中,然后告诉构建代理/测试运行者在哪里可以找到Chutzpah的“东西”(请参见yaml中的pathtoCustomTestAdapters开关)下面)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项目的根目录中(不是回购的根目录)

{
  "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是否对我的成功至关重要。