C# 如何在VisualStudio中实现或语句的完整代码覆盖?
我只是想知道visual studio中的代码覆盖率是如何工作的。下面是我的场景的一个非常简单的版本C# 如何在VisualStudio中实现或语句的完整代码覆盖?,c#,visual-studio,unit-testing,code-coverage,visual-studio-2017,C#,Visual Studio,Unit Testing,Code Coverage,Visual Studio 2017,我只是想知道visual studio中的代码覆盖率是如何工作的。下面是我的场景的一个非常简单的版本 if (A || B) { //Do the thing } 我有4个单元测试来判断“事情”是否完成,针对A和B的所有可能排列进行测试,如下所示: A'+B'断言事情已未完成 A'+B断言事情已经完成 A+B'断言事情已经完成 A+B断言事情已经完成 所有这些测试都可以预料地通过。问题是,对于if条件本身,我仍然得到一个“部分”覆盖的结果。据我所知,我有一切可能。这里有我遗漏的东西
if (A || B)
{
//Do the thing
}
我有4个单元测试来判断“事情”是否完成,针对A和B的所有可能排列进行测试,如下所示:
- A'+B'断言事情已未完成
- A'+B断言事情已经完成
- A+B'断言事情已经完成
- A+B断言事情已经完成
我不确定这是否有任何区别,但从技术上讲,A和B是同一类的两个实例的属性比较,因此代码看起来像这样:
if(oldObj.ValueA != newObj.ValueA || oldObj.ValueB != newObj.ValueB)
{
//do the thing
}
希望这是足够的细节,再次感谢。我意识到痴迷于100%的覆盖率是愚蠢的,但这主要是出于好奇。您是在调试模式还是在发布模式下测试覆盖率?我工作的公司已经删除了调试/发布,并用他们自己的配置(基本上是开发、质量保证、生产、,所以我不知道如何准确地回答这个问题。本质上,问题是:有优化,还是没有优化?使用什么级别的优化?那么您使用的是哪一种?如果它不是Prod,您可以尝试使用Prod吗?我在Dev和Prod中都进行了尝试,得到了相同的结果。我不知道如何回答有关优化的问题。我仍然缺乏构建/部署方面的经验。我将尝试创建一个全新的项目,看看这是否会有所不同