大家好我有一个关于NUnit Extension(2.5.10)的问题.我想要做的是将一些额外的测试信息写入数据库.为此,我使用事件监听器创建了NUnit扩展.我遇到的问题是在运行时调用public void TestFinished(TestResult result)方法两次.写入数据库的代码是在这个方法中,这使我在数据库中有重复的条目.问题是:这是预期的行为吗?我可以做些什么吗?扩展代码如下.谢谢.
using System;
using NUnit.Core;
using NUnit.Core.Extensibility;
namespace NuinitExtension
{
[NUnitAddinAttribute(Type = ExtensionType.Core,
Name = "Database Addin",
Description = "Writes test results to the database.")]
public class MyNunitExtension : IAddin, EventListener
{
public bool Install(IExtensionHost host)
{
IExtensionPoint listeners = host.GetExtensionPoint("EventListeners");
if (listeners == null)
return false;
listeners.Install(this);
return true;
}
public void RunStarted(string name, int testCount){}
public void RunFinished(TestResult result){}
public void RunFinished(Exception exception){}
public void TestStarted(TestName testName){}
public void TestFinished(TestResult result)
{
// this is just sample data
SqlHelper.SqlConnectAndWRiteToDatabase("test", test",
2.0, DateTime.Now);
}
public void SuiteStarted(TestName testName){}
public void SuiteFinished(TestResult result){}
public void UnhandledException(Exception exception){}
public void TestOutput(TestOutput testOutput){}
}
Run Code Online (Sandbox Code Playgroud)
}
我已经通过简单地从 NUnit 2.5.10\bin\net-2.0\addins 文件夹中删除我的扩展程序集来解决这个问题。目前一切都按预期进行,但我不确定如何。我认为你必须在 addins 文件夹中包含扩展/插件程序集。我通过 NUnit.exe 打开解决方案来运行测试。我的扩展项目是我正在测试的解决方案的一部分。我也向 NUnit 人员提出了这个问题,并得到了以下解释:
最有可能的是,您的插件被加载了两次。为了更容易测试插件,NUnit 除了搜索插件目录之外,还搜索每个测试程序集以查找要加载的插件。通常,当您确信您的插件可以工作时,您应该将其从测试程序集中删除并将其安装在插件文件夹中。这使得它可用于使用 NUnit 运行的所有测试。OTOH,如果您真的只想让插件应用于某个项目,那么您可以将其保留在测试程序集中,而不是将其安装为永久插件。 http://groups.google.com/group/nunit-discuss/browse_thread/thread/c9329129fd803cb2/47672f15e7cc05d1#47672f15e7cc05d1
| 归档时间: |
|
| 查看次数: |
4294 次 |
| 最近记录: |