Esta pregunta está en sus años avanzados, pero pensé en compartir mi forma de hacer esto.
Básicamente, tengo todas mis clases de prueba unitaria en el ensamblado que están probando en un espacio de nombres 'UnitTest' debajo del 'predeterminado' para ese ensamblado; cada archivo de prueba está envuelto en un:
#if DEBUG
...test code...
#endif
block, y todo eso significa que a) no se está distribuyendo en una versión yb) puedo usar declaraciones internal
/ Friend
level sin saltar el aro.
La otra cosa que ofrece, más pertinente a esta pregunta, es el uso de partial
clases, que se pueden usar para crear un proxy para probar métodos privados, por ejemplo, para probar algo como un método privado que devuelve un valor entero:
public partial class TheClassBeingTested
{
private int TheMethodToBeTested() { return -1; }
}
en las clases principales del ensamblado y la clase de prueba:
#if DEBUG
using NUnit.Framework;
public partial class TheClassBeingTested
{
internal int NUnit_TheMethodToBeTested()
{
return TheMethodToBeTested();
}
}
[TestFixture]
public class ClassTests
{
[Test]
public void TestMethod()
{
var tc = new TheClassBeingTested();
Assert.That(tc.NUnit_TheMethodToBeTested(), Is.EqualTo(-1));
}
}
#endif
Obviamente, debe asegurarse de no usar este método durante el desarrollo, aunque una versión de lanzamiento pronto indicará una llamada inadvertida si lo hace.