Rya*_*ndy 5 msbuild xunit msbuild-task
我正在尝试建立一个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>
Run Code Online (Sandbox Code Playgroud)
当我在更改后构建我的解决方案(通常编辑.csproj文件)时,我得到了这个:
无法从程序集C:\ Users [myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll加载"Xunit.Runner.MSBuild.xunit"任务.无法加载文件或程序集'file:/// C:\ Users [myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll'或其依赖项之一.该系统找不到指定的文件.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.
即使我将xunit.runner.msbuild.dll和xunit.runner.utility.dll添加到它引用的位置的项目中,我收到此消息.但如果我再次建造没有任何变化,我会一直得到这个:
找不到"xunit"任务.请检查以下内容:1.)项目文件中任务的名称与任务类的名称相同.2.)任务类是"public"并实现Microsoft.Build.Framework.ITask接口.3.)在项目文件或位于"C:\ Windows\Microsoft.NET\Framework\v4.0.30319"目录中的*.tasks文件中正确声明了任务.
但我检查了所有这些东西:
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" />
Run Code Online (Sandbox Code Playgroud)
MSBuildProjectDirectory是一个保留属性,包含“项目文件所在目录的绝对路径”。
编辑:
尝试通过全名Xunit.Runner.MSBuild.xunit使用目标
<Target Name="Test">
<Xunit.Runner.MSBuild.xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5507 次 |
| 最近记录: |