Gallio интеграция с Нант и Хадсон - PullRequest
1 голос
/ 23 ноября 2011

Вот ситуация, я пытаюсь запустить ряд тестов Gallio после процесса сборки / развертывания на сервере.Сценарий сборки - Nant, и мы активируем его через Hudson для удаленных серверов.

После долгих усилий я столкнулся со следующей ошибкой из нашего скрипта сборки.ПРИМЕЧАНИЕ. Я очистил пути к файлам и заменил их на (Описание)

Buildfile: file:///(Build script location)
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: build-robot 


[include] Including file (Build script location)
[property] Read-only property "doDeploy" cannot be overwritten.
[property] Read-only property "runSmokeTests" cannot be overwritten.
[tstamp] Tuesday, November 22, 2011 3:51:01 PM.
[tstamp] Tuesday, November 22, 2011 3:51:01 PM.
[echo] Setting RELEASE mode to true
[echo] The Output Folder is set to: (Nightly build server)
[echo] Loading Gallio Task from: (Source dir path)\References\Gallio\Gallio.NAntTasks.dll
[loadtasks] Scanning assembly "Gallio.NAntTasks" for extensions.

global.failure:


tear.down:

 [echo] In tear.down...

clean:

 [echo] Starting clean target...
 [echo] End of clean target...

BUILD FAILED - 0 non-fatal error(s), 2 warning(s)

(output dir)(30,3):
Failure scanning
"(Source dir path)\References\Gallio\Gallio.NAntTasks.dll" for extensions.
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

. Здесь находится область сценария, в которую загружается сборка.

<!-- Load Gallio Tasks for automated Testing -->
<echo message="Loading Gallio Task from: ${path::combine(repoDirectory,'Source\References\Gallio\Gallio.NAntTasks.dll')}" />
<loadtasks assembly="${path::combine(repoDirectory,'Source\References\Gallio\Gallio.NAntTasks.dll')}"  if="${file::exists(path::combine(repoDirectory,'Source\References\Gallio\Gallio.NAntTasks.dll'))}"  /> 
<echo message="Failed to find Gallio.NantTasks.dll" unless="${file::exists(path::combine(repoDirectory,'Source\References\Gallio\Gallio.NAntTasks.dll'))}"  /> 
<echo message="${LoaderExceptions}" />
<echo message="Gallio Tasks Loaded..." />

И само задание Gallio.

<target name="run.automated.tests"> 
    <echo message="Begining Automated Testing..." />
    <property name="nant.onfailure" value="global.failure" />       

    <gallio result-property="exitCode" failonerror="false" >

        <files>
            <include name="${path::combine(outputDirectory,'bin\AutomatedQATest.dll')}" />
        </files>
        <!--
        <runner-extension value="AutomatedQATest,Gallio.AutomatedQATest" /> 
        <assemblies>                
          <include value="${path::combine(outputDirectory,'bin\AutomatedQATest.dll')}" /> 
        </assemblies>  -->
    </gallio>
    <fail message="Oh no!" if="${exitCode} != '0'}" />
</target>

Есть идеи?Большую часть сегодняшнего дня я потратил на поиски ответа, либо Google предлагает мне обесцененные обходные пути, либо идеи, которые не работают.

Спасибо, ребята!

Ответы [ 2 ]

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

Давай узнаем, что это несколько проблем, действующих вместе.Во-первых, задачи не были загружены правильно: Gallio требует, чтобы Gallio.dll И Gallio.Nant.tasks.dll были загружены.

Во-вторых, тесты, которые я пытался запустить, требовали правильной работы графического интерфейса пользователя, чтобычтобы иметь графический интерфейс на удаленной машине, вы должны установить интерактивный флаг.У Gallio нет флага для этого, поэтому я решил потанцевать с этой проблемой, вызвав PSEXEC.exe для запуска Gallio.Echo.exe на удаленной машине с включенным интерактивным режимом и установкой для использования сеанса RDP-TCP с идентификатором # 1.Команда в nant выглядит следующим образом.

<exec program="psexec.exe" failonerror="false" >
    <arg line="\\${test.auto1.serverpath} /accepteula -i 0 -u ${DevUsername} -p ${DevPassword} C:\Gallio\bin\Gallio.Echo.exe (The path) ${build.version}.${date.prefix}\bin\${theTargetTest} /rd:C:\Reports /rt:HTML /ra:zip /rnf:${projectName}-${date.cal}" />
</exec>     

Таким образом, в конце концов я удалил необходимость запускать тесты nant, вызывая Gallio с правильными параметрами на удаленном компьютере напрямую с помощью вышеуказанной команды.после того, как я соберусь, заархивируй нужные биты, перемести его на сервер и разархивируй.После завершения теста я заархивирую отчет об испытании и перенесу его обратно на сервер hudson.

Надеюсь, это спасет кого-то от боли в будущем.

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

Включить ведение журнала Fusion для получения более подробных сообщений об ошибках.

Смотрите этот урок: http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx

Я думаю, что есть одна или несколько недостающих зависимостей.

...