在TFS Build Pipeline上运行(x)单元测试

时间:2017-11-30 14:26:43

标签: unit-testing tfs visual-studio-2017 xunit build-definition

我只是一个初学者,仍在努力学习TFS及其持续集成工作流程。话虽如此,这也可能是一个愚蠢的问题,因为我可能会遗漏一个简单的细节,尽管任何帮助或建议都会受到高度赞赏。

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

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。我在构建管道中添加了Visual Studio Test - testAssemblies任务,并配置了搜索模式以查找名为MyUnitTest.dll的程序集等。当我对构建进行排队时,我在VSTest的log中收到以下警告。

Warning: No test is available in C:\BuildAgent\_work\9\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无论如何都找不到在目标程序集中运行的测试。我非常肯定我可能错误配置了某些内容,或者忘记了适当地设置某个特定参数。对于任何可能指出我可能做错的建议,我将不胜感激。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  
      
  1. 添加dotnet restore任务。
  2.   
  3. 然后是dotnet build任务。
  4.   
  5. 使用参数dotnet test
  6. 添加--no-build --logger "trx;LogFileName=tests-log.trx任务   
  7. 使用以下设置添加Publish test results任务
  8.   

enter image description here

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