我有一个简单的方法可以从集合中计算总数。
public void MethodToTest(Collection<int> collection)
{
int sum = 0;
foreach (int value in collection)
{
sum += value;
}
}
目标是使用命令行中运行的 opencoverage 工具获得 100% 的分支覆盖率。我还有一个调用 MethodToTest 方法的单元测试:
[TestMethod]
public void TestMethodToTest()
{
BomProviderMock mock = new BomProviderMock();
BomManager bomManager = new BomManager(mock);
List<int> list = new List<int>();
for (int i = 0; i <= Int16.MaxValue; i++)
{
list.Add(i);
}
// Firts attempt with a non empty collection
bomManager.MethodToTest(new Collection<int>(list));
// Second attempt with an empty collection
bomManager.MethodToTest(new Collection<int>());
}
使用工具 opencover 后,MethodToTest 方法在分支覆盖率上获得了 80%。我的问题是,foreach 循环是否会影响分支覆盖率,如果是,我怎样才能用这个简单的代码获得 100% 的覆盖率?