1

我在一个更大的构建文件中有以下 NAnt 目标:

<target name="load-gallio">
  <loadtasks assembly="lib/Gallio.NAntTasks.dll" />
</target>

<target name="test" depends="load-gallio">
    <gallio failonerror="true">
       <files>
          <include name="target/tests.dll" />
       </files>
   </gallio>
</target>

tests.dll 在 Gallio 命令行运行器和 Icarus 中运行良好。当我运行“nant test”时,我得到以下信息:

load-gallio:

test:

   [gallio] Gallio NAnt Task - Version 3.4 build 12
   [gallio] Start time: 11:12
   [gallio] Stop time: 11:12 (Total execution time: 0.881 seconds)

BUILD FAILED

INTERNAL ERROR

Gallio.Runtime.RuntimeException: Could not resolve component for service type 'Gallio.Runner.Projects.ITestProjectM
anager' because there do not appear to be any components registered and enabled for that service type.
   at Gallio.Runtime.Extensibility.RegistryServiceLocator.ResolveNonDisabledDescriptor(Type serviceType)
   at Gallio.Runtime.Extensibility.RegistryServiceLocator.Resolve[TService]()
   at Gallio.Runner.TestLauncher.RunWithRuntime()
   at Gallio.Runner.TestLauncher.Run()
   at Gallio.NAntTasks.GallioTask.RunLauncher(TestLauncher launcher)
   at Gallio.NAntTasks.GallioTask.InternalExecute()
   at Gallio.NAntTasks.GallioTask.ExecuteTask()
   at NAnt.Core.Task.Execute()
   at NAnt.Core.Target.Execute()
   at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
   at NAnt.Core.Project.Execute()
   at NAnt.Core.Project.Run()

为什么会这样?我是否缺少某种运行时设置/服务注册步骤?这是一个错误吗?提前感谢您的时间和帮助。

4

1 回答 1

2

我倾向于直接调用运行器,因为它通常更灵活,并且通常会消除 nant 和实用程序之间的依赖关系。我不知道这是否适合您,但如果是一个例子,可能是:

<exec program="gallio.echo.exe" basedir="Utilities" verbose="true">
    <arg line="target/tests.dll"/>
    <arg value="/rt:XML"/>
    <arg value="/rd:Reports"/>
    <arg value="/no-echo-results"/>
    <arg value="/f:exclude Category:RunManually"/>
</exec> 

可以在此处找到命令行参数的完整文档。

于 2013-01-29T03:33:59.697 回答