Недавно я безуспешно пытался использовать NAnt (beta 0.86.2962.0) для запуска некоторых модульных тестов, скомпилированных с последней стабильной версией NUnit (v2.4.8).
Я получаю следующую ошибку:
[nunit2] Сборка «C: \ Dev \ MySample \ bin \ tests \ My.Sample.Tests.dll» не содержит тестов.
Конечно, в сборке есть тесты, которые я могу запустить из любого бегуна, например NUnit one, TestDriven или Resharper. Я хотел бы использовать задачу <nunit2>, а не непосредственно задачу <exec>, но мне интересно, возможно ли это, даже используя файлы app.config для привязки версий сборки.





Не могу вспомнить почему, но я отказался от задачи <nunit2> и с радостью использовал задачу <exec> и nunit-console.exe. Если это поможет, вот моя тестовая цель, на которой работают NUnit и FxCop. Обратите внимание, что он пропускает их, если исполняемые файлы не находятся в пути Windows.
<target name = "test" description = "Run unit tests" depends = "build">
<property name = "windows-path" value = "${string::to-lower(environment::get-variable('PATH'))}"/>
<property name = "nunit-in-path"
value = "${string::contains(windows-path, 'nunit')}"/>
<echo message = "Tests skipped because no NUnit folder was found in the Windows path."
unless = "${nunit-in-path}"/>
<exec program = "nunit-console.exe" if = "${nunit-in-path}">
<arg file = "../MyProject/MyProjectTest.nunit"/>
</exec>
<property name = "fxcop-in-path"
value = "${string::contains(windows-path, 'fxcop')}"/>
<echo message = "FxCop skipped because no FxCop folder was found in the Windows path."
unless = "${fxcop-in-path}"/>
<fxcop projectFile = "../MyProject/MyProject.fxcop" directOutputToConsole = "true"
failOnAnalysisError = "true" if = "${fxcop-in-path}"/>
</target>
Дон, Энди: Я считаю, что хорошей причиной для использования задачи <exec> вместо <nunit2> является то, что если в вашем наборе тестов есть тесты, помеченные как [ExpectedException], а исключение действительно выбрано, задача <nunit2> NAnt сообщает об этом как неудача вместо успеха, и сборка терпит неудачу. У меня сейчас эта проблема. Я собираюсь решить эту проблему с помощью <exec>, но, конечно, буду благодарен за другой совет по обходному пути.
Привет, ребята, я пытаюсь использовать свою DLL модульного теста в файле arg. Но это не говорит о том, какие тесты провалились. Тег arg не содержит подробностей или ошибок при ошибке, так как же узнать, прошли ли тесты ваши тесты?
Я думаю, что nunit-console устанавливает значение возврата, отличное от нуля, если какой-либо из тестов завершается неудачно, и это должно привести к сбою сборки, @ alice7. Я думаю, что он также записывает сообщения в стандартный вывод о любых неудачных тестах. Если вы этого не видите, то я подозреваю, что что-то еще не так. Попробуйте запустить nunit-console из командной строки, чтобы вы могли четко видеть результат. Nant может не найти nunit-console.exe или NUnit не сможет найти вашу тестовую DLL. Если это не поможет, я предлагаю вам задать отдельный вопрос с максимально подробной информацией.
Я продолжаю ... Раньше я пытался использовать магию app.config, чтобы попытаться заставить задачу nunit2 работать, но некоторое время назад сдался и теперь использую задачу exec, как описано выше.