Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在VisualStudio中实现或语句的完整代码覆盖?_C#_Visual Studio_Unit Testing_Code Coverage_Visual Studio 2017 - Fatal编程技术网

C# 如何在VisualStudio中实现或语句的完整代码覆盖?

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条件本身,我仍然得到一个“部分”覆盖的结果。据我所知,我有一切可能。这里有我遗漏的东西

我只是想知道visual studio中的代码覆盖率是如何工作的。下面是我的场景的一个非常简单的版本

if (A || B)
{
    //Do the thing
}
我有4个单元测试来判断“事情”是否完成,针对A和B的所有可能排列进行测试,如下所示:

  • A'+B'断言事情已未完成
  • A'+B断言事情已经完成
  • A+B'断言事情已经完成
  • A+B断言事情已经完成
所有这些测试都可以预料地通过。问题是,对于if条件本身,我仍然得到一个“部分”覆盖的结果。据我所知,我有一切可能。这里有我遗漏的东西吗

提前谢谢你,如果已经有答案,请随时给我重定向,但我找不到答案。事实上,我找到的答案说我应该有100%的覆盖率,所以我想看看你们的想法

需要注意的事项:
我不确定这是否有任何区别,但从技术上讲,A和B是同一类的两个实例的属性比较,因此代码看起来像这样:

if(oldObj.ValueA != newObj.ValueA || oldObj.ValueB != newObj.ValueB)
{
    //do the thing
}

希望这是足够的细节,再次感谢。我意识到痴迷于100%的覆盖率是愚蠢的,但这主要是出于好奇。

您是在调试模式还是在发布模式下测试覆盖率?我工作的公司已经删除了调试/发布,并用他们自己的配置(基本上是开发、质量保证、生产、,所以我不知道如何准确地回答这个问题。本质上,问题是:有优化,还是没有优化?使用什么级别的优化?那么您使用的是哪一种?如果它不是Prod,您可以尝试使用Prod吗?我在Dev和Prod中都进行了尝试,得到了相同的结果。我不知道如何回答有关优化的问题。我仍然缺乏构建/部署方面的经验。我将尝试创建一个全新的项目,看看这是否会有所不同