我试图建立一个C#项目,该项目在构建时将运行xUnit测试,因此可以在持续集成中使用它们。我有一个常规项目,一个使用xUnit的类库测试项目以及我的测试运行器项目。从我读过的所有内容来看,似乎应该可以通过在测试运行器项目中进行以下操作来使其工作:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Test"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[auto-created project stuff]
<UsingTask AssemblyFile="xunit.runner.msbuild.dll"
TaskName="Xunit.Runner.MSBuild.xunit" />
<Target Name="Test">
<xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
</Target>
</Project>
更改后(通常是编辑.csproj文件)构建解决方案时,我得到以下信息:
即使我将xunit.runner.msbuild.dll和xunit.runner.utility.dll添加到项目所指向的位置中,也会收到此消息。但是,如果我再次构建而没有任何更改,我将始终得到以下信息:
但是我已经检查了所有这些事情:
Xunit.Runner.MSBuild.xunit
(而xunit在类名中为小写)。 (我还认为问题可能是xunit.runner.msbuild.dll面向.NET 2.0,并且我使用的是VS 2010,但我在.NET 2.0中重新创建了测试运行器项目,问题仍然存在。)
有人可以帮忙吗?
最佳答案
您需要指定 xunit.runner.msbuild.dll 的正确路径。
首先,您可以设置完整路径并测试xunit是否可以按需要工作。
但是对于真实环境,您应该指定dll的相对路径。
<UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\..\lib\xunit\xunit.runner.msbuild.dll"
TaskName="Xunit.Runner.MSBuild.xunit" />
MSBuildProjectDirectory 是reserved property,包含“项目文件所在目录的绝对路径”。
编辑:
尝试使用全名的目标Xunit.Runner.MSBuild.xunit
<Target Name="Test">
<Xunit.Runner.MSBuild.xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
</Target>
关于MSBuild-尝试运行xUnit(.net)测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5160480/