J'essaie de travailler avec l'attribut ExpectedException
dans un C# UnitTest
, mais j'ai des problèmes pour le faire fonctionner avec mon Exception
particulier. Voici ce que j'ai obtenu:
REMARQUE: J'ai enroulé des astérisques autour de la ligne qui me pose problème.
[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);
}
}
J'ai le ExpectedException
attraper le type de base Exception
. Cela ne devrait-il pas s'en occuper? J'ai essayé d'utiliser AttributeUsage
, mais cela n'a pas aidé non plus. Je sais que je peux l'envelopper dans un bloc try/catch, mais j'aimerais voir si je peux comprendre ce style.
Merci a tous!
Il échouera sauf si le type d'exception est exactement le type que vous avez spécifié dans l'attribut, par exemple
PASSER:-
[TestMethod()]
[ExpectedException(typeof(System.DivideByZeroException))]
public void DivideTest()
{
int numerator = 4;
int denominator = 0;
int actual = numerator / denominator;
}
ÉCHOUER:-
[TestMethod()]
[ExpectedException(typeof(System.Exception))]
public void DivideTest()
{
int numerator = 4;
int denominator = 0;
int actual = numerator / denominator;
}
Mais cela passera ...
[TestMethod()]
[ExpectedException(typeof(System.Exception), AllowDerivedTypes=true)]
public void DivideTest()
{
int numerator = 4;
int denominator = 0;
int actual = numerator / denominator;
}