MSBuild - 尝试运行xUnit(.net)测试

我正在尝试建立一个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.TestsbinDebugOnePageOneDb.Tests.dll" />
  </Target>
</Project>
当我在更改后构建我的解决方案(通常编辑.csproj文件)时,我得到了这个:   “Xunit.Runner.MSBuild.xunit”任务   无法从程序集中加载   C:用户[名为myUsername] 代码 OnePageOneDb OnePageOneDb.TestRunner xunit.runner.msbuild.dll。   无法加载文件或程序集   '文件:/// C:用户[名为myUsername] 代码 OnePageOneDb OnePageOneDb.TestRunner xunit.runner.msbuild.dll'   或其中一个依赖项。系统   找不到指定的文件。   确认一下   声明是正确的,即   程序集及其所有依赖项   可用,并且任务包含   实现的公共类   Microsoft.Build.Framework.ITask。 即使我将xunit.runner.msbuild.dll和xunit.runner.utility.dll添加到它引用的位置的项目中,我收到此消息。但如果我再次建造没有任何变化,我会一直得到这个:   找不到“xunit”任务。校验   以下内容:1。)的名称   项目文件中的任务是一样的   作为任务类的名称。 2.)   任务类是“公共的”并实现   Microsoft.Build.Framework.ITask   接口。 3.)任务是正确的   在...中宣布   项目文件,或* .tasks文件   位于   “C: WINDOWS Microsoft.NET 框架 v4.0.30319”   目录。 但我检查了所有这些东西: xunit.runner.msbuild.dll中的任务类是
Xunit.Runner.MSBuild.xunit
(并且xunit在类名中是小写的)。 任务类继承自Task,后者实现ITask。 所以也许在UsingTask中存在问题,但我不知道它是什么。 (我还认为问题可能是xunit.runner.msbuild.dll针对的是.NET 2.0,而我正在使用VS 2010,但我在.NET 2.0中重新创建了测试运行器项目并且问题仍然存在。) 有人可以帮忙吗?     
已邀请:
您需要指定xunit.runner.msbuild.dll的正确路径。 首先,您可以设置完整路径并测试xunit是否正常工作。 但是对于真实环境,您应该指定dll的相对路径。
<UsingTask AssemblyFile="$(MSBuildProjectDirectory)....libxunitxunit.runner.msbuild.dll"
           TaskName="Xunit.Runner.MSBuild.xunit" />
MSBuildProjectDirectory是一个保留属性,包含“项目文件所在目录的绝对路径”。 编辑: 尝试使用全名Xunit.Runner.MSBuild.xunit来使用目标
<Target Name="Test">
    <Xunit.Runner.MSBuild.xunit Assembly="$(MSBuildProjectDirectory)..OnePageOneDb.TestsbinDebugOnePageOneDb.Tests.dll" />
</Target>
    
如果我安装了Pex和Moles,我会收到完全相同的错误消息。卸载后一切正常。     
默认情况下,在“release”配置中构建触发器运行xunit测试。 如果您尝试在tfsbuild中禁用运行xunit测试,请传递以下构建参数。 这在新的跨平台构建中非常有用,其中运行单元测试是一个单独的步骤。
/p:RunXunitTests=false
    

要回复问题请先登录注册