2021-04-28 16:49:39 +02:00
It should be clear to a casual reader what code a test is testing and what results are expected. Unfortunately, that's not usually the case with the ``++[ExpectedException]++`` attribute since an exception could be thrown from almost any line in the method.
This rule detects MSTest and NUnit ``++ExpectedException++`` attribute.
2021-04-28 18:08:03 +02:00
2021-04-28 16:49:39 +02:00
== Noncompliant Code Example
----
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))] // Noncompliant
public void TestNullArg()
{
//...
}
----
2021-04-28 18:08:03 +02:00
2021-04-28 16:49:39 +02:00
== Compliant Solution
----
[TestMethod]
public void TestNullArg()
{
bool callFailed = false;
try
{
//...
}
catch (ArgumentNullException)
{
callFailed = true;
}
Assert.IsTrue(callFailed, "Expected call to MyMethod to fail with ArgumentNullException");
}
----
or
----
[TestMethod]
public void TestNullArg()
{
Assert.ThrowsException<ArgumentNullException>(() => /*...*/);
}
----
2021-04-28 18:08:03 +02:00
2021-04-28 16:49:39 +02:00
== Exceptions
This rule ignores one-line test methods, since it is obvious in such methods where the exception is expected to be thrown.
2021-04-28 18:08:03 +02:00
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]