Esta questão está em seus anos avançados, mas pensei em compartilhar minha maneira de fazer isso.
Basicamente, eu tenho todas as minhas classes de teste de unidade no assembly que eles estão testando em um namespace 'UnitTest' abaixo do 'padrão' para esse assembly - cada arquivo de teste é envolvido em um:
#if DEBUG
...test code...
#endif
bloquear, e tudo isso significa que a) não está sendo distribuído em uma versão eb) eu posso usar internal
/ Friend
declarações de nível sem pular de aro.
A outra coisa que isso oferece, mais pertinente a esta questão, é o uso de partial
classes, que podem ser usadas para criar um proxy para testar métodos privados, por exemplo, para testar algo como um método privado que retorna um valor inteiro:
public partial class TheClassBeingTested
{
private int TheMethodToBeTested() { return -1; }
}
nas classes principais do assembly e na classe de teste:
#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, você precisa garantir que não use esse método durante o desenvolvimento, embora uma compilação de Release indique em breve uma chamada inadvertida para ele se o fizer.