Assumptions
Assumptions are intended to express the state a test must be in to provide a meaningful result. They are functionally
similar to assertions, however an unmet assumption will produce an Inconclusive
test result, as opposed to a
Failure
.
Assumptions make use of the Assume
static class.
Syntax Example
[TestCase(5)]
[TestCase(0)]
[TestCase(-5)]
public void Number_Divided_By_Itself_Is1(int numberToCheck)
{
var divisor = GetMatchingDivisor(numberToCheck);
Assume.That(divisor, Is.Not.EqualTo(0), () => "divisor must not be zero in order for this test to be valid");
var result = numberToCheck / divisor;
Assert.That(result, Is.EqualTo(1));
}
/// <summary>
/// Returns same number that's passed in
/// </summary>
private int GetMatchingDivisor(int inputNumber)
{
// If this ever returned 0, we'd be in trouble
return inputNumber;
}
Assume.That()
has the same set of overloads as Assert.That()
. For further details, see the Constraint
Model documentation.
Note
Failing assumptions indicate that running tests is invalid, while Multiple Asserts allow testing to continue after a failure. For that reason, the two features are incompatible and assumptions may not be used within a multiple assert block.