MSBuild - пытается запустить тесты xUnit (.net) - PullRequest
5 голосов
/ 02 марта 2011

Я пытаюсь настроить проект 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.xunit» из сборки C: \ Users [myusername] \ Code \ OnePageOneDb \ OnePageOneDb.TestRunner \xunit.runner.msbuild.dll.Не удалось загрузить файл или сборку '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.) Класс задачи является «общедоступным» и реализует интерфейс Microsoft.Build.Framework.ITask.3.) Задача правильно объявлена ​​в файле проекта или в файлах * .tasks, расположенных в каталоге «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319».

Но я проверил все эти вещи:

  1. Класс задачи в xunit.runner.msbuild.dll - Xunit.Runner.MSBuild.xunit (и xunit - строчная буква в имени класса).
  2. Класс задачи наследуется от Task, который реализует ITask.
  3. Так что, возможно, есть проблема в UsingTask, но я не знаю, что это такое.

(я также думал, чтопроблема может заключаться в том, что xunit.runner.msbuild.dll нацелен на .NET 2.0, и я использую VS 2010, но я заново создал проект для запуска тестов в .NET 2.0, и проблема сохраняется.)

Можеткто-нибудь помочь?

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Вам необходимо указать правильный путь к xunit.runner.msbuild.dll .Прежде всего, вы можете просто указать полный путь и проверить, что xunit работает так, как вы хотите.Но для реальной среды вы должны указать относительный путь к dll.

<UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\..\lib\xunit\xunit.runner.msbuild.dll"
           TaskName="Xunit.Runner.MSBuild.xunit" />

MSBuildProjectDirectory является зарезервированным свойством и содержит " абсолютный путькаталог, в котором находится файл проекта".

РЕДАКТИРОВАТЬ:

Попробуйте использовать цель с полным именем Xunit.Runner.MSBuild.xunit

<Target Name="Test">
    <Xunit.Runner.MSBuild.xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
</Target>
0 голосов
/ 26 января 2017

По умолчанию сборка в конфигурации "release" запускает тесты xunit.Если вы пытаетесь отключить запуск тестов xunit в tfsbuild, передайте следующий параметр сборки.Это может быть полезно в новых кроссплатформенных сборках, где выполнение юнит-тестов - это отдельный шаг.

/p:RunXunitTests=false
0 голосов
/ 28 сентября 2011

Я получаю точно такое же сообщение об ошибке, если у меня установлены Pex и Moles.Все отлично работает после их удаления.

...