के लिए ऑटोफिक्चर परीक्षण मेरे पास निम्न श्रेणी और परीक्षण है। मैं कन्स्ट्रक्टर के पैरामीटर के रूप में एक शून्य मान पास करने का परीक्षण करना चाहता हूं और ArgumentNullException
की अपेक्षा कर रहा हूं। लेकिन चूंकि मैं ऑटोफिक्चर की CreateAnonymous
विधि का उपयोग करता हूं, इसलिए मुझे इसके बजाय TargetInvocationException
मिलता है।अमान्य कन्स्ट्रक्टर पैरामीटर
उन प्रकार के परीक्षणों को लिखने का सही तरीका क्या है?
public sealed class CreateObject : Command {
// Properties
public ObjectId[] Ids { get; private set; }
public ObjectTypeId ObjectType { get; private set; }
public UserId CreatedBy { get; private set; }
// Constructor
public CreateObject(ObjectId[] ids, ObjectTypeId objectType, UserId createdBy) {
Guard.NotNull(ids, "ids");
Guard.NotNull(objectType, "objectType");
Guard.NotNull(createdBy, "createdBy");
Ids = ids;
ObjectType = objectType;
CreatedBy = createdBy;
}
}
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void constructor_with_null_ids_throw() {
fixture.Register<ObjectId[]>(() => null);
fixture.CreateAnonymous<CreateObject>();
}
मैं इस तरह के गार्ड क्लॉज सत्यापन उच्च स्तर पर करता हूं - http://stackoverflow.com/a/11455580/11635 देखें। साथ ही, ['ExpectedExceptionAttribute' एक बुरा विचार है - यदि आप xUnit का उपयोग नहीं कर सकते हैं तो कम से कम 'Assert.Throws'] का उपयोग करें (http://stackoverflow.com/a/113616/11635) (हाँ मुझे न तो पता है इनमें से 'TargetInvocationException' के संबंध में आपके प्रश्न का सामना करना पड़ता है, यही कारण है कि यह कोई जवाब नहीं है, लेकिन कोड को स्पष्ट करने के लिए कदम उठाना है ताकि आप इसके साथ काम कर सकें - भले ही यह एक बग है, आप एक स्पष्ट repro और अंतरिम –