据我所知,包含addin的程序集必须位于C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\addins
。我认为我的程序集正在加载,因为我必须关闭NUnit-gui才能替换addins目录中的程序集。然而,问题是我没有看到插件的任何影响(没有调用任何事件处理程序)
所以如何验证我的插件已加载?我很乐意使用调试器,但我对打印线调试非常满意。当我尝试执行File.WriteAllText()
时,插件无法加载但没有给出任何理由。另外,如何调试加载过程?
NUnit docs很有帮助,但在可扩展性方面,它们最多只是一块骨头,并且NUnit.Core中的类没有任何智能感知。
答案 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