我想重用泛型測試,但是如何獲得通用測試數據?獲得通用單元測試的通用測試數據
我寫我自己的IReadOnlyCollection<T>
接口,並寫了使用它的一些類。由於該接口的方法和屬性(例如Contains
,CopyTo
)應該始終如一地工作,無論實現它的類如何,我都希望編寫可應用於任何實現的通用測試。使用在this post提出的辦法,我現在有以下幾點:
// Tests that must work for any type T:
public abstract class IReadOnlyCollectionTests<T>
{
protected abstract IReadOnlyCollection<T> CreateInstance(params T[] data);
[Test]
public void Contains_GivenExistingValue_ReturnsTrue()
{
// Given
T[] data; // <-- Get some data?
T value = data[1];
var sut = CreateInstance(data);
// When
bool result = sut.Contains(value);
// Then
Assert.IsTrue(result);
}
// 40 more such tests...
}
現在我需要一些數據來測試。類型T
可能是布爾值,或字符串,或任何東西。 如何獲得一些適用於任何類型T
的通用數據?
順便說一句:我會通過獲取一測試類每個實現的,像這樣的對我BitArray
實現運行這個通用測試(一個布爾值的集合):
[TestFixture]
public class BitArrayROC : IReadOnlyCollectionTests<bool>
{
protected override IReadOnlyCollection<bool> CreateInstance(params bool[] data)
{
return new BitArray(data);
}
}
類似到BitArray
,我有一個StringCollection
類(等),我想測試IReadOnlyCollection<T>
實現。
由於實現對於每個泛型類型(T)都是** **,所以我不會再測試這個類。只寫一個測試類來測試你的'ReadOnlyCollection'''有一些泛型參數(例如'Object') –
它提到了不同的'T'('BitArray','StringCollection')實現是不同的。 –