运行 (x)TFS 构建管道上的单元测试

Running (x)Unit Tests on TFS Build Pipeline

我只是一个初学者,仍在尝试了解 TFS 及其持续集成工作流。话虽如此,这也可能是一个愚蠢的问题,因为我可能会遗漏一个简单的细节,但我们将不胜感激任何帮助或建议。

所以,我有一个使用 .NET Core 2.0 编写的相当简单的单元测试示例,我想 运行 作为我们 TFS 服务器 CI 构建管道上的测试任务。它看起来像这样:

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyUnitTest
{

    [TestClass]
    public class MyUnitTest
    {

        [TestMethod]
        public void PassingTest()
        {
            Assert.AreEqual(4, Add(2, 2));
        }

        [TestMethod]
        public void FailingTest()
        {
            Assert.AreEqual(5, Add(2, 2));
        }

        int Add(int x, int y)
        {
        return x + y;
        }

    }

}

当我在 Visual Studio 中尝试 运行 这些测试时,它完美地构建并且测试成功并相应地失败。所以我提交我的项目并将其推送到我们的 TFS git 存储库。现在,我同样想将这些测试集成到我们的构建管道中。

我们 CI 构建中使用的构建定义看起来像 this. I have added Visual Studio Test - testAssemblies task in the build pipeline and configured the search pattern to find the assembly named MyUnitTest.dll and such. When I queue the build, I get the following warning in VSTest's log

Warning: No test is available in C:\BuildAgent\_work\s\MyUnitTest\MyUnitTest\bin\release\netcoreapp1.1\MyUnitTest.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.

所以,在我看来,VSTest 无法在目标程序集中找到 运行 的测试。我很确定我可能配置错误,或者忘记适当地设置一些特定参数。如果有任何可能指出我可能做错了什么的建议,我将不胜感激。

在网上搜索解决方案,我遇到了这个,似乎有类似的问题。

首先确保您的构建代理环境与本地开发机器相同。比如Visual Studio版本,MsTestAdapter,xunit 运行ner版本等等。

您可以通过手动 运行 直接在构建代理计算机上而不是通过 TFS 进行测试来双重确认这一点。

然后在构建管道中使用以下任务:

  1. Add a dotnet restore task.
  2. Then a dotnet build task.
  3. Add a dotnet test task with the arguments --no-build --logger "trx;LogFileName=tests-log.trx
  4. Add a Publish test results task with the following settings

更多详情请参考本教程博客:Running dotnet core xUnit tests on Visual Studio Team Services (VSTS)