visual uso studio sharp documentar documentacion crear como clases atributos c# unit-testing exception expected-exception

c# - studio - ExpectedException Uso del atributo



summary c sharp (1)

Estoy tratando de trabajar con el atributo ExpectedException en un C# UnitTest , pero tengo problemas para que funcione con mi Exception particular. Esto es lo que tengo:

NOTA: Envolví los asteriscos alrededor de la línea que me está dando el problema.

[ExpectedException(typeof(Exception))] public void TestSetCellContentsTwo() { // Create a new Spreadsheet instance for this test: SpreadSheet = new Spreadsheet(); // If name is null then an InvalidNameException should be thrown. Assert that the correct // exception was thrown. ReturnVal = SpreadSheet.SetCellContents(null, "String Text"); **Assert.IsTrue(ReturnVal is InvalidNameException);** // If text is null then an ArgumentNullException should be thrown. Assert that the correct // exception was thrown. ReturnVal = SpreadSheet.SetCellContents("A1", (String) null); Assert.IsTrue(ReturnVal is ArgumentNullException); // If name is invalid then an InvalidNameException should be thrown. Assert that the correct // exception was thrown. { ReturnVal = SpreadSheet.SetCellContents("25", "String Text"); Assert.IsTrue(ReturnVal is InvalidNameException); ReturnVal = SpreadSheet.SetCellContents("2x", "String Text"); Assert.IsTrue(ReturnVal is InvalidNameException); ReturnVal = SpreadSheet.SetCellContents("&", "String Text"); Assert.IsTrue(ReturnVal is InvalidNameException); } }

Tengo la ExpectedException captura el tipo base Exception . ¿No debería esto cuidar de ello? He intentado usar AttributeUsage , pero tampoco me ayudó. Sé que puedo envolverlo en un bloque try / catch, pero me gustaría ver si puedo resolver este estilo.

¡Gracias a todos!


Fallará a menos que el tipo de excepción sea exactamente el tipo que ha especificado en el atributo, por ejemplo

PASAR:-

[TestMethod()] [ExpectedException(typeof(System.DivideByZeroException))] public void DivideTest() { int numerator = 4; int denominator = 0; int actual = numerator / denominator; }

FALLAR:-

[TestMethod()] [ExpectedException(typeof(System.Exception))] public void DivideTest() { int numerator = 4; int denominator = 0; int actual = numerator / denominator; }

Sin embargo esto pasará ...

[TestMethod()] [ExpectedException(typeof(System.Exception), AllowDerivedTypes=true)] public void DivideTest() { int numerator = 4; int denominator = 0; int actual = numerator / denominator; }