Si tengo el siguiente código:¿Configurar en clases derivadas con NUnit?
[TestFixture]
public class MyBaseTest
{
protected ISessionManager _sessionManager;
[SetUp]
public void SetUp() { /* some code that initializes _sessionManager */ }
}
[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;
[SetUp]
public void SetUp() { /* some code that initializes _repository */ }
[Test]
public void BlogRepository_TestGoesHere() { /* some tests */ }
}
... NUnit no llamar a la rutina de instalación de base. Esto es esperado, y no tengo ningún problema con él en sí mismo. Puedo conseguir el programa de instalación derivados de llamar a la instalación básica de primera, así:
[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;
[SetUp]
public new void SetUp()
{
base.SetUp();
/* some code that initializes _repository */
}
Ésta es feo. Si fuera un constructor, no tendría que hacerlo.
que podría utilizar el patrón "método de la plantilla", y tienen la siguiente:
public void MyBaseTest
{
abstract void SetUp();
[SetUp]
public void BaseSetUp()
{
/* base initialization */
SetUp(); // virtual call
}
}
No soy especialmente aficionado a esto, tampoco.
¿Qué haces cuando sus clases de prueba necesitan SetUp, y se derivan de otra clase que también necesita SetUp?
Lo sé. Yo no quiero –
Método parcial, entonces? Debido a que el SetUp está decorado con un atributo, no estoy seguro de que haya demasiadas formas de hacerlo. –
Ooh. No pensé en métodos parciales. Enfoque interesante. –