Ich brauche einen Unit-Test für die nächste Funktion zu schreiben, und ich sah, die ich verwenden kann [ExpectedException]ExpectedException Assert
ist dies die Funktion getestet werden.
public static T FailIfEnumIsNotDefined<T>(this T enumValue, string message = null)
where T:struct
{
var enumType = typeof (T);
if (!enumType.IsEnum)
{
throw new ArgumentOutOfRangeException(string.Format("Type {0} is not an Enum, therefore it cannot be checked if it is Defined not have defined.", enumType.FullName));
}
else if (!Enum.IsDefined(enumType, enumValue))
{
throw new ArgumentOutOfRangeException(string.Format("{1} Value {0} is not does not have defined value in Enum of type {0}. It should not be...", enumType.FullName, message ?? ""));
}
return enumValue;
}
und hier würde den Code gehen, um die Ausnahmen zu testen, die
[TestMethod]
[ExpectedException(ArgumentOutOfRangeException(ArgumentException), "message")]
public void FailIfEnumIsNotDefined_Check_That_The_Value_Is_Not_Enum()
{
// PREPARE
// EXECUTE
// ASSERT
}
warf werden sollen habe ich keine Ahnung haben, entweder die Assertion für die Ausnahmen zu machen.
Verwenden Sie 'Assert.Throws()' anstelle von 'ExpectedException', da dieses Attribut den Test bestanden hat, wenn die exc In jedem Teil des Testmethodencodes ist eine Änderung aufgetreten. 'Assert.Throws' ermöglicht es, den genauen Ort des Codes zu testen, an dem die Ausnahme auftritt. – sthotakura
@sthotakura MSTest hat Assert.Throws nicht, es sei denn, Sie schreiben ein benutzerdefiniertes, welches die bevorzugte MSTest-Ausnahmebehandlung ist. Ähnlich wie NUnit :) Es gibt einen Link in meiner Antwort – Spock
@Spock Ich wusste das nicht, Danke! – sthotakura