我只是一个初学者,仍在努力学习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,这似乎有类似的问题。
答案 0 :(得分:2)
首先确保您的构建代理环境与本地开发机器相同。如Visual Studio版,MsTestAdapter,xunit runner版等。
您可以通过直接在构建代理计算机上手动运行测试而不是通过TFS来双重确认。
然后在构建管道中使用以下任务:
- 添加
dotnet restore
任务。- 然后是
dotnet build
任务。- 使用参数
添加dotnet test
--no-build --logger "trx;LogFileName=tests-log.trx
任务- 使用以下设置添加
醇>Publish test results
任务
更多详情请参阅本教程博客:Running dotnet core xUnit tests on Visual Studio Team Services (VSTS)