什么是推荐的方法来掩盖通用类/方法的单元测试?
例如(参考下面我的示例代码).是否有两到三倍的测试来覆盖使用几种不同类型的TKey,TNode类来测试方法?还是只有一堂课?
public class TopologyBase<TKey,TNode,TRelationship> where TNode : NodeBase<TKey>,new() where TRelationship : RelationshipBase<TKey>,new() { // Properties public Dictionary<TKey,NodeBase<TKey>> Nodes { get; private set; } public List<RelationshipBase<TKey>> Relationships { get; private set; } // Constructors protected TopologyBase() { Nodes = new Dictionary<TKey,NodeBase<TKey>>(); Relationships = new List<RelationshipBase<TKey>>(); } // Methods public TNode CreateNode(TKey key) { var node = new TNode {Key = key}; Nodes.Add(node.Key,node); return node; } public void CreateRelationship(NodeBase<TKey> parent,NodeBase<TKey> child) { . . .
解决方法
我通常创建一个DummyClass作为测试目的,作为通用参数传递(在你的情况下你应该创建3类),我测试一个类(TopologyBase)一次.
使用不同的通用类型进行测试是没有意义的,因为通用类型不应该破坏ToopologyBase类.