rspec/rules/S3431/csharp/rule.adoc

61 lines
1.2 KiB
Plaintext
Raw Normal View History

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 16:49:39 +02:00
== Noncompliant Code Example
----
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))] // Noncompliant
public void TestNullArg()
{
//...
}
----
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 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.
ifdef::rspecator-view[]
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
endif::rspecator-view[]