@ Lambdageek;
Assert.That(aCollection, Has.Member(aValue)
Assert.That(aCollection, Has.No.Member(aValue)
был вокруг некоторое время. Существует также множество других полезных ограничений коллекции, прилично документированных здесь .
В дополнение к удобочитаемости вы также получаете гораздо более полезный уровень обратной связи, когда что-то не получается. Стоит крошечных дополнительных усилий, ИМО.
EDIT
[Test]
public void Test() {
var c = new[] {"one", "two"};
Assert.That(c, Has.Member("three"));
}
Test failed:
Expected: collection containing "three"
But was: < "one", "two" >
Tests.cs(73,0): at ...Test()
Приветствия
Berryl
Бедный человек
public static class TestExtensions
{
public static bool IsOneOf<T>(this T candidate, IEnumerable<T> expected) {
if (expected.Contains(candidate)) return true;
var msg = string.Format("Expected one of: '{0}'. Actual: {1}", ", "._insertBetween(expected.Select(x => Convert.ToString(x))), candidate);
Assert.Fail(msg);
return false;
}
private static string _insertBetween(this string delimiter, IEnumerable<string> items)
{
var builder = new StringBuilder();
foreach (var item in items)
{
if (builder.Length != 0)
{
builder.Append(delimiter);
}
builder.Append(item);
}
return builder.ToString();
}
internal static IEnumerable<string> GenerateSplits(this string str, params char[] separators)
{
foreach (var split in str.Split(separators))
yield return split;
}
}
Неудачный тест
[Test]
public void IsOneOf_IfCandidateNotInRange_Error()
{
IEnumerable<string> expected = new[] { "red", "green", "blue" };
const string candidate = "yellow";
Assert.That(candidate.IsOneOf(expected));
}
IsOneOf_IfCandidateNotInRange_Error' failed:
Expected one of: 'red, green, blue'. Actual: yellow