gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:25:00 25 4
gpt4 key购买 nike

我正在尝试建立一个 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 文件),我得到这个:

The "Xunit.Runner.MSBuild.xunit" task could not be loaded from the assembly C:\Users[myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll. Could not load file or assembly 'file:///C:\Users[myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.



即使我将 xunit.runner.msbuild.dll 和 xunit.runner.utility.dll 添加到它所指位置的项目中,我也会收到此消息。但是,如果我在没有任何更改的情况下再次构建,我始终会得到以下信息:

The "xunit" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with in the project file, or in the *.tasks files located in the "C:\Windows\Microsoft.NET\Framework\v4.0.30319" directory.



但我已经检查了所有这些东西:
  • 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)\..\..\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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com