Использование aspnet_compiler.exe для компиляции.Net Web Apps
У меня есть код в верхнем слое моего веб-приложения.Net, который я хотел бы выполнить модульным тестом, но когда мой сервер сборки компилирует проект с использованием aspnet_compiler.exe, он делает файл.dll, который вообще не может использоваться другим проект, то есть тестовый проект NUnit.
(Это относится к веб-приложениям ASP .Net и приложениям ASP .Net MVC.)
Я что-то здесь не так делаю? Вот мой скрипт NAnt, который вызывает компилятор...
<exec program="${asp.compiler.home}/aspnet_compiler.exe" failonerror="true">
<arg value="-nologo"/>
<arg value="-c"/>
<arg value="-f"/>
<arg value="-errorstack"/>
<arg value="-v"/>
<arg value="${project.name}"/>
<arg value="-p"/>
<arg value="${project::get-base-directory()}"/>
<arg value="${web.deploy.dir}\${project.name}"/>
</exec>
4 ответа
Вам не нужно использовать aspnet_compiler.exe. Это всего лишь служебное приложение для предварительной компиляции страниц aspx, чтобы избежать задержки при запуске, когда пользователь впервые заходит на страницу.
Насколько я понимаю, любой не aspx/ascx-код в вашем веб-приложении ASP.NET MVC будет нормально скомпилирован в DLL при сборке вашего решения. Эта DLL затем может быть использована вашим тестовым проектом NUnit. Я предполагаю, что это те биты, которые вы хотите проверить.
Итак, просто соберите проект с использованием MSBuild от NAnt и забудьте о aspnet_compiler.exe.
У меня есть код в верхнем слое моего веб-приложения.Net, который я хотел бы провести модульное тестирование [...]
Остановись прямо там; Это проблема. Поместите этот код в помощник и протестируйте его вне ASP.NET.
Разве вы не можете запустить что-то подобное здесь, а не в Нанте, как событие после сборки?
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p "$(SolutionDir)\PathToMyWebProject"
(где FilePathToMyWebProject - путь к файлу вашего проекта относительно файла решения)
Мы используем MSBuild с файлом сборки для компиляции веб-приложения и запуска тестов. Если вы можете пропустить материал NAnt, вот соответствующий раздел из файла сборки (называемый как параметр для MSbuild.exe):
<!-- Build projects by calling the Project files generated by VS -->
<Target Name="Build">
<MSBuild Projects="$(ProjectFile)" />
<MSBuild Projects="$(TestProjectFile)" />
</Target>
<!-- Run Unit tests -->
<Target Name="Test" DependsOnTargets="Build">
<CreateItem Include="ClearViewTest\Bin\Debug\ClearViewTest.exe">
<Output TaskParameter="Include" ItemName="ClearViewTest" />
</CreateItem>
<NUnit Assemblies="@(ClearViewTest)" ToolPath="C:\Program Files\NUnit 2.4\bin" ContinueOnError="false" OutputXmlFile="SoultionTestResults.xml" />
</Target>