Me gustaría utilizar NUnit para ejecutar pruebas unitarias en mi complemento, pero debe ejecutarse en el contexto de mi aplicación. Para resolver esto, estaba tratando de desarrollar un complemento que ejecute NUnit, que a su vez ejecutará mis pruebas en el contexto de la aplicación.Cómo ejecutar NUnit desde mi código
No he encontrado una documentación específica sobre este tema, así que cavaron una pieza de información aquí y allí y salió con el siguiente fragmento de código (que es similar a uno que encontré aquí en stackoverflow):
public static void Main()
{
SimpleTestRunner runner = new SimpleTestRunner();
TestPackage package = new TestPackage("Test");
string loc = Assembly.GetExecutingAssembly().Location
package.Assemblies.Add(loc);
if(runner.Load(package))
{
TestResult result = runner.Run(new NullListener());
}
}
La variable de resultado dice "no tiene TestFixture" aunque estoy seguro de que está allí. De hecho, mi archivo de prueba contiene dos pruebas.
El uso de otro método que he encontrado, que se resume en el siguiente código:
TestSuiteBuilder builder = new TestSuiteBuilder();
TestSuite testSuite = builder.Build(package);
// Run tests
TestResult result = testSuite.Run(new NullListener(), NUnit.Core.TestFilter.Empty);
vi estructuras de datos NUnit con sólo 1 de prueba y que tenía el mismo error.
Para completar, estoy usando la última versión de nunit, que es 2.5.5.10112.
¿Alguien sabe lo que me estoy perdiendo? Se apreciará un código de ejemplo. Mi clase de prueba es:
[TestFixture]
public class UnitTests
{
public UnitTests()
{
}
[Test]
public void TestEqual()
{
long a = 10;
long b = 10;
Assert.AreEqual(a, b);
}
[Test]
public void TestNotEqual()
{
long a = 10;
long b = 11;
Assert.AreNotEqual(a, b);
}
}
Se puede construir un pequeño, pero completo programa + plugin y mostrarnos el código, que replica el problema? O, como mínimo, ¿puede publicar el archivo de clase de su complemento que está intentando probar? –
¿Podría ser que su complemento esté compilado con una versión diferente de NUnit? Deduzco que no es por lo que has escrito en la pregunta, pero aun así ... haría incompatibles los tipos de atributos. –
si hago Console.WriteLine (loc), imprime el nombre de la consola exe. Intenté cargar el dll de clase y obtuve "Acceso denegado". Luego, cuando hago Console.WriteLine (result.ResultState), se imprime "Inconclusive". ¿Cómo se obtiene el mensaje "no tiene textfixture"?Además, ¿cómo se comprueba que de hecho está cargando su dll de prueba? Me podría estar perdiendo algo obvio aquí. –