我有一个类,它实现了一个专门的buffer类型的集合。例如,对我来说,Flush方法似乎不是单元可测试的。例如,如果我想测试如果我添加数据,刷新它,再次添加数据,然后再次刷新它,看看我是否只获得第一次刷新后添加的数据,会发生什么。为了能够做到这一点,我还必须使用Add方法。在属于被测试类的测试中使用另一种方法,并且应该单独进行单元测试是不是一种糟糕的做法?这个类是单元可测试的吗?像这样的问题突然出现,我无法回答。提前感谢!
public class DataBuffer : IDataBuffer
{
private Dictionary<string, List<Dictionary<string, object>>> buffer;
public DataBuffer()
{
buffer = new Dictionary<string, List<Dictionary<string, object>>>();
}
public void Add(string type, Dictionary<string, object> data)
{
if (!buffer.ContainsKey(type))
{
buffer[type] = new List<Dictionary<string, object>>();
}
buffer[type].Add(metrics);
}
public Dictionary<string, List<Dictionary<string, object>>> Flush()
{
var result = buffer;
buffer = new Dictionary<string, List<Dictionary<string, object>>>();
return result;
}
public int Count(string type) => buffer[type].Count;
}
基本上,我想写一个这样的单元测试。这看起来像是有效的吗?
[TestMethod]
public void Flush_NoDataIsGivenBackTwice()
{
var data1 = new Dictionary<string, object>
{
{ "key1", "value1" }
};
dataBuffer.Add("type", data1);
var result1 = dataBuffer.Flush();
Assert.AreEqual(1, result1["type"].Count);
Assert.AreSame(data1, result1["type"].First());
var data2 = new Dictionary<string, object>
{
{ "key2", "value2" }
};
dataBuffer.Add("type", data2);
var result2 = dataBuffer.Flush();
Assert.AreEqual(1, result2["type"].Count);
Assert.AreSame(data2, result2["type"].First());
}
https://stackoverflow.com/questions/54989669
复制相似问题