मेरे पास एक सार्वजनिक वर्ग (TargetContainerDto
) है जिसमें 2 आंतरिक गुण हैं। एक enum और एक प्रकार जिसमें उस enum से एक मूल्य शामिल है।इकाई परीक्षण आंतरिक गुणों के लिए प्रतिबिंब
मैं इकाई का परीक्षण करने की कोशिश कर रहा हूं, लेकिन मुझे समस्याएं आ रही हैं।
internal enum TargetContainerType
{
Endpoint,
Group,
User,
UserGroup
}
internal TargetContainerType Type { get; set; }
यह मेरा परीक्षण वर्ग
public void setType(TargetContainerDto t, int val)
{
BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Instance;
PropertyInfo pi = t.GetType().GetProperty("Type", bf);
pi.SetValue(t, val, null);
}
public TargetContainerDto setTypeTo(TargetContainerDto t, int val)
{
setType(t, val);
return t;
}
TargetContainerDto
प्रकार की तुलना में अधिक गुण है में अपने प्रतिबिंब कोड है, लेकिन वे सार्वजनिक कर रहे हैं ताकि परीक्षण उन्हें ठीक है। iconURL
टाइपिंग के आधार पर TargetContainerDto
में परिभाषित एक स्ट्रिंग है।
public void DefaultSubGroupIcon()
{
var o1 = new TargetContainerDto
{
Id = 1234,
DistinguishedName = "1.1.1.1",
SubGroup = "test",
};
setType(o1, 3);
Assert.AreEqual(o1.IconUrl, "/App_Themes/Common/AppControl/Images/workstation1.png");
}
मैं परीक्षा पद्धति में setTypeTo फोन जब मैं typevalue निर्धारित करने की आवश्यकता है, लेकिन मैं एक MethodAccessException
हो रही है: यहाँ मेरी Testmethod है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मुझे enum तक पहुंच नहीं है। मैं प्रतिबिंब के माध्यम से enum कैसे उपयोग कर सकते हैं?
धन्यवाद
बस उत्सुक - क्या आपने कभी परीक्षणों के तहत आंतरिक स्थिति की पहुंच के लिए परीक्षणों में रिफ्लेक्सियन का उपयोग करके स्टॉप पर विचार किया है और अपने आवेदन को फिर से डिजाइन किया है? –
क्या आप अपवाद पोस्ट कर सकते हैं? क्या टाइप के पास पहले एक मान सेट है या यह शून्य है? – Akku
वैसे, मैंने अभी आपके परिदृश्य का परीक्षण किया है और यह अच्छी तरह से काम करता है। क्या आप कृपया अधिक विवरण प्रदान कर सकते हैं, न केवल अपवाद विवरण, बल्कि आपके ** TargetContainerDto ** कक्षा परिभाषा? इसके लिए बेस क्लास क्या है? –