运行 (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 进行测试来双重确认这一点。
然后在构建管道中使用以下任务:
- Add a
dotnet restore
task.
- Then a
dotnet build
task.
- Add a
dotnet test
task with the arguments --no-build --logger "trx;LogFileName=tests-log.trx
- Add a
Publish test results
task with the following settings
更多详情请参考本教程博客:Running dotnet core xUnit tests on Visual Studio Team Services (VSTS)
我只是一个初学者,仍在尝试了解 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 进行测试来双重确认这一点。
然后在构建管道中使用以下任务:
- Add a
dotnet restore
task.- Then a
dotnet build
task.- Add a
dotnet test
task with the arguments--no-build --logger "trx;LogFileName=tests-log.trx
- Add a
Publish test results
task with the following settings
更多详情请参考本教程博客:Running dotnet core xUnit tests on Visual Studio Team Services (VSTS)