यह प्रश्न इसके उन्नत वर्षों में है, लेकिन मुझे लगा कि मैं इसे करने का अपना तरीका साझा करूंगा।
मूल रूप से, मेरे पास विधानसभा में मेरी सभी इकाई परीक्षण कक्षाएं हैं जो वे उस विधानसभा के लिए 'डिफ़ॉल्ट' के नीचे 'यूनिटटेस्ट' नामस्थान में परीक्षण कर रहे हैं - प्रत्येक परीक्षण फ़ाइल में लिपटे हैं:
#if DEBUG
...test code...
#endif
ब्लॉक, और उस सभी का मतलब है कि ए) यह एक रिलीज में वितरित नहीं किया जा रहा है और बी) मैं हूप जंपिंग के बिना internal
/ Friend
स्तर की घोषणाओं का उपयोग कर सकता हूं ।
दूसरी बात यह है कि इस प्रश्न के लिए अधिक प्रासंगिक, partial
कक्षाओं का उपयोग है , जिसका उपयोग निजी तरीकों के परीक्षण के लिए एक प्रॉक्सी बनाने के लिए किया जा सकता है, इसलिए उदाहरण के लिए किसी निजी विधि की तरह कुछ परीक्षण करना जो पूर्णांक मान लौटाता है:
public partial class TheClassBeingTested
{
private int TheMethodToBeTested() { return -1; }
}
विधानसभा के मुख्य वर्गों में, और परीक्षण वर्ग:
#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
जाहिर है, आपको यह सुनिश्चित करने की आवश्यकता है कि आप इस पद्धति का उपयोग विकास करते समय नहीं करते हैं, हालांकि एक रिलीज बिल्ड जल्द ही एक अनजाने कॉल को इंगित करेगा यदि आप करते हैं।