Hola a todos Tengo una pregunta con respecto a NUnit Extension (2.5.10). Lo que intento hacer es escribir información de prueba adicional en la base de datos . Para eso he creado la extensión NUnit utilizando el evento Listeners. El problema que estoy experimentando es que el método void TestFinished (resultado de TestResult) se está llamando dos veces en runtime. Y mi código que escribe en la base de datos está en este método y eso me deja con entradas duplicadas en la base de datos. La pregunta es: ¿Es ese el comportamiento esperado? ¿Puedo hacer algo sobre ? El código de extensión está debajo. Gracias.NUnit extensión
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){}
}
}
I piense que se llamará a 'TestFinished' al menos una vez por prueba. ¿Estás ejecutando solo una prueba? Si es así, es posible que se llame a 'TestFinished' una vez para el accesorio y una vez para el método de prueba. No he buscado dentro del código NUnit en mucho tiempo, así que no estoy 100% seguro. Debería poder verlo marcando las propiedades en el 'TestResult' pasado. –
Gracias Mike, estoy ejecutando múltiples pruebas y quiero registrar cada prueba, pero solo una vez, en cambio, recibo dos entradas para cada prueba. Y pensé que este método en particular solo se ejecutaría por prueba una vez y SuiteStarted se ejecutaría para cada TestFixture. – Igor
Las suites son diferentes. Hay una manera explícita de configurar un conjunto. Nunca lo uso, así que no estoy seguro de cómo hacerlo. 'TestResult' sigue el patrón Compuesto. Por lo tanto, podría ser el resultado de una prueba o un accesorio o la prueba completa. Me sorprende que se llame dos veces para una sola prueba. ¿Es posible que se haya instalado dos veces? –