【发布时间】:2010-12-22 16:44:30
【问题描述】:
我正在正确地编写单元测试,我想知道通过调用另一个方法来验证结果来测试被测方法的结果是一种不好的技术吗?
即。在下面的示例中,我只能通过调用 FetchObject 或 HasCachedObjects 属性来检查 StoreObject 方法调用是否成功(即存储在缓存中的对象),这两者都包含应单独测试的逻辑。在这种结果对公共 API 隐藏的情况下,您会怎么做?
我有一个缓存类:
public class Cache {
private Dictionary<string, object> _Cache = null;
public bool HasCachedObjects {
get {
if (_Cache.Count > 0) {
return true;
} else {
return false;
}
}
}
public Cache() {
_Cache = new Dictionary<string,object>();
}
public void StoreObject(string key, object obj) {
_Cache[key] = obj;
}
public object FetchObject(string key) {
if (_Cache.ContainsKey(key)) {
return _Cache[key];
}
return null;
}
}
【问题讨论】:
-
它是一个虚构的简单类,将调用 cache.StoreObject("test", obj);然后 Assert.AreEqual(true, cache.HasCachedObjects);或类似的东西
标签: c# unit-testing