Bu soru ileri yıllarında, ancak bunu yapma tarzımı paylaşacağımı düşündüm.
Temel olarak, test ettikleri derlemedeki tüm birim test sınıflarım, o derleme için "varsayılan" ın altında bir "UnitTest" ad alanında var - her test dosyası bir:
#if DEBUG
...test code...
#endif
blok, ve tüm bunlar a) bir sürümde dağıtılmadığı ve b) çember atlama olmadan internal
/ Friend
level bildirimlerini kullanabileceğim anlamına geliyor .
Bunun sunduğu diğer bir şey, bu soruya daha uygun olarak, partial
özel yöntemleri test etmek için bir proxy oluşturmak için kullanılabilen sınıfların kullanılmasıdır, bu nedenle, örneğin bir tamsayı değeri döndüren özel bir yöntem gibi bir şeyi test etmek için:
public partial class TheClassBeingTested
{
private int TheMethodToBeTested() { return -1; }
}
montajın ana sınıflarında ve test sınıfında:
#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
Açıkçası, geliştirme sırasında bu yöntemi kullanmadığınızdan emin olmanız gerekir, ancak bir Yayın yapısı yakında bunu yaparsanız yanlışlıkla ona yapılan bir çağrıyı gösterecektir.