如何验证是否已加载NUnit Addin?

时间:2011-02-02 01:41:48

标签: nunit add-in

据我所知,包含addin的程序集必须位于C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\addins。我认为我的程序集正在加载,因为我必须关闭NUnit-gui才能替换addins目录中的程序集。然而,问题是我没有看到插件的任何影响(没有调用任何事件处理程序)

所以如何验证我的插件已加载?我很乐意使用调试器,但我对打印线调试非常满意。当我尝试执行File.WriteAllText()时,插件无法加载但没有给出任何理由。另外,如何调试加载过程?

NUnit docs很有帮助,但在可扩展性方面,它们最多只是一块骨头,并且NUnit.Core中的类没有任何智能感知。

1 个答案:

答案 0 :(得分:1)

您应该使用一些跟踪one的跟踪库,您可以下载here。 现在,您可以使用以下语句来装饰相关方法:

using ApiChange.Infrastructure;
class MyAddin
{
   static TypeHashes myType = new TypeHashes(typeof(MyAddin);

   void RelevantMethod()
   {
       using (Tracer t = new Tracer(myType, "RelevantMethod"))
       {
           ....
           if(bLoaded == false)
             t.Error("Could not load adding because of {0}", reason);
       }
   }
}

然后,您可以通过环境变量_TRACE

启用跟踪
set _Trace=debugoutput

可以使用SysInternals工具DbgView查看DebugOutput(没有附加只需启动它并观察跟踪)。 或者您追踪到文件

set _Trace=file

跟踪文件位于可执行文件所在的位置。 Nunit.exe.txt。如果将_TRACE设置为某个随机字符串,它将跟踪控制台和OutputDebugString的帮助以向您提供帮助。

为什么这个跟踪库?它实际上是唯一能够在您的方法离开时跟踪任何异常的方法。当方法包含使用如上所述的跟踪语句时,这确实有效。如果NUnit确实选择忽略您的插件实际上是您的错,您现在可以找到它。 输出将如下所示:

  

* ApiChange.IntegrationTests.Diagnostics.TracingTests.Demo_Show_Leaving_Trace_With_Exception   18:57:46.665 03064/05180< {{> ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod   18:57:46.668 03064/05180< {{> ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod   18:57:46.670 03064/05180< }}<抛出ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod异常:System.NotImplementedException:嗨这是一个错误      在ApiChange.IntegrationTests.Diagnostics.TracingTests.FaultyMethod()      在ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod()      在ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod()      at ApiChange.IntegrationTests.Diagnostics.TracingTests.Demo_Show_Leaving_Trace_With_Exception()   18:57:46.670 03064/05180< }}< ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod持续时间2ms   18:57:46.689 03064/05180< }}< ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeMethod持续时间24ms

这应该可以很容易地找出你的Addin根本没用的原因。而且你不需要调试器; - )。

此致,    Alois Kraus