Попытка использовать Родинки с NUnit. Получение "Родинки требуют тесты, чтобы быть инструментальным процессом" - PullRequest
4 голосов
/ 28 сентября 2010

Я пытаюсь использовать родинки с NUnit и получаю следующую ошибку: "Родинки требуют тестов, чтобы быть инструментальным процессом".Я также использую Visual NUnit в Visual Studio 2008, чтобы заставить это работать.Любая помощь приветствуется.

Ответы [ 5 ]

10 голосов
/ 10 мая 2011

Это то, что я сделал, чтобы заставить Молей работать с NUnit:

  1. Возьмите архив на C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip и извлеките папку решения Moles.

  2. Сборка проекта NUnit в Visual Studio (2008) для выпуска.

  3. Скопируйте выходные файлы Microsoft.Moles.NUnit.dll и Microsoft.Moles.NUnit.xml из ...\Moles\NUnit\bin\Release\ в C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\. Я подозреваю, что этот шаг перекомпиляции надстройки NUnit вместо того, чтобы использовать тот, который был загружен и установлен, был фактической точкой решения.

  4. В своем тестовом проекте VS обязательно добавьте ссылку на C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll, который вы только что скопировали.

  5. В вашем классе тестирования VS пометьте метод тестирования атрибутом [Moled] (для этого потребуется using Microsoft.Moles.Framework.NUnit). В качестве альтернативы, оберните его реализацию в блок using (MolesContext.Create()) { ... } (для этого потребуется using Microsoft.Moles.Framework).

  6. Из командной строки вызовите NUnit Test Runner через Moles Runner со следующим: "C:\Program Files (x86)\Microsoft Moles\bin\moles.runner.exe" "path\to\your\test\assembly.dll" /r:"C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" /x86 /args:"/domain=None"

Я обнаружил, что атрибут [Moled] не работает с [TestCase (...)] и возвращает вас к сценарию неинструцированной ошибки. Вместо этого блок using (MolesContext.Create()) работает и в этом случае.

Как только вы обнаружите, что все работает, вы можете рассмотреть запуск moles runner как внешнего инструмента в Visual Studio. Следуйте инструкциям в Выполнение родинок с помощью NUnit Console из Visual Studio , обновление аргументов как в шаге 6.

Обратите внимание, что это было на 64-битной машине с Windows 7, с NUnit 2.5.9, Microsoft Pex and Moles (x86) 0.94.51006.1. Учитывайте фактические папки для разных путей, версий и т. Д.

1 голос
/ 23 декабря 2011
У

superjos самый правильный ответ, и с помощью надстройки «Непрерывное тестирование» вы можете получить Visual Studio для запуска программы Moles через консоль NUnit с помощью этого пакетного файла:

@echo off

rem Uses the Microsoft Moles runner and fires off the NUnit console runner so you can use Moles with NUnit.
rem This batch file is intended to be run from the Continuous Testing plugin in Visual Studio.
rem However, it can be used to run nunit tests from anyhere with Moles as long as the first parameter
rem is the assembly to be tested.  All other parameters are passed to NUnit.

set ASSEMBLY=%1
set MOLESPATH="c:\Program Files\Microsoft Moles\bin\moles.runner.exe"
set NUNITPATH="C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"
shift

if [%ASSEMBLY%]==[] goto HelpScreen
if [%1]==[] goto RunAlone
if [%2]==[] goto RunParams1 
if [%3]==[] goto RunParams2 
if [%4]==[] goto RunParams3 
if [%5]==[] goto RunParams4 
if [%6]==[] goto RunParams5 
if [%7]==[] goto RunParams6 
if [%8]==[] goto RunParams7 
if [%9]==[] goto RunParams8 
goto RunParams9
:HelpScreen
echo "The parameters are the same as NUnit Console runner with the exception that:
echo "   1) Only one assembly is supported and it must come first"
echo "   2) Only 9 extra parameters may be specified"
echo
%NUNITPATH% /?
exit 1
:RunAlone
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY%
goto ExitRunner
:RunParams1
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1
goto ExitRunner
:RunParams2
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2
goto ExitRunner
:RunParams3
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3
goto ExitRunner
:RunParams4
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4
goto ExitRunner
:RunParams5
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5
goto ExitRunner
:RunParams6
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6
goto ExitRunner
:RunParams7
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7
goto ExitRunner
:RunParams8
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8
goto ExitRunner
:RunParams9
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8 /args:%9
goto ExitRunner
:ExitRunner

Просто обновите пути к вашей версии программных пакетов. Это также можно использовать для запуска из других программ, если у вас есть время обновить его.

1 голос
/ 21 февраля 2011

Я использую Moles версии 0.94.51023.0.

Насколько я знаю, вам необходимо добавить атрибут ниже для вашего метода тестирования.Я использую среду тестирования Visual Studio, не уверен, что то же самое с NUnit, et.al.

[HostType("Moles")]

Я также читал, что вы можете добавить атрибут [Moled] в метод теста, но он был мне недоступен, и я не стал вдаваться в причину, если предположить, что он старыйдокументация - которой, как представляется, очень много с Кротами.

Обновление : Согласно Справочному руководству по кротам, стр.26, атрибут MoledAttribute для тестового метода - это путь с NUnit.Необходимо зарегистрировать сборку Microsoft.Moles.NUnit.dll в NUnit, скопировав ее в папку NUnit bin / addins .

Затем добавьте [Moled] атрибут метода испытаний.

[Test]
[Moled]
public void MyTest() {
  ...
}

В противном случае вы бы добавили блок использования для переноса метода теста, как показано ниже:

[Test]
public void MyTest() {
  using (MolesContext()) {
  ...
  }
}
1 голос
/ 04 мая 2011

В дополнение к добавлению атрибута [HostType ("Moles")], вам нужно обернуть бегунка теста бегуном молей.Например:

moles.runner.exe MyAssembly.dll /r:nunit-console.exe

Вероятно, бегунок Moles находится в C: \ Program Files \ Microsoft Moles \ bin .Для использования выполните:

moles.runner.exe help
0 голосов
/ 28 сентября 2010

Вы не можете запускать MS Moles с NUnit из Visual Studio.Вы должны либо использовать MSTest (модульные тесты Visual Studio) для этого, либо запустить тесты NUnit с помощью Moles из командной строки. См. Справочное руководство .

Возможная альтернатива: если это соответствует вашим потребностям, вы можете использовать платформу автоматизации Gallio для запуска всех видов тестовых сред (в вашем случае NUnit и MSTest) рядом ...

HTH!Томас

...