System.Diagnostics.Debug.Assert(true)有什么作用?

时间:2015-02-05 19:22:32

标签: c# .net assert

我在控制台应用程序中发现了以下代码,这看起来有点奇怪:

System.Diagnostics.Debug.Assert(true);

它做了什么?

4 个答案:

答案 0 :(得分:1)

Gabe所述,它并没有做太多事情:

  

在DEBUG构建中,方法调用将不执行任何操作。在发布版本中   方法调用甚至不会被编译到程序中。

可能是代码被错误地留在了那里。

答案 1 :(得分:0)

看起来像是一个金丝雀测试。

canary test是一个简单的测试,预计会一直通过。它检查非常基本的东西,比如(在这种情况下),"我的所有框架都正确加载了吗?"如果断言失败,那么编写它的人知道他们在构建过程中遇到了严重的问题,甚至在查看任何其他错误之前都没有意义。 ; s固定。

虽然这可能看起来很荒谬,但我已经看过介绍性单元测试& TDD课程明确地教导人们从Assert(真实)金丝雀测试开始。放入该代码的人只是按照他们的教学方式进行操作

答案 2 :(得分:0)

这句话是“无操作”的书面形式。它什么都不做。这就像写作:

if (true) { }

就个人而言(我认为大多数人会同意),我发现这种性质的任何东西都没有价值,我认为这只会使代码混乱。我已经看过这样的事情并且考虑过为什么我认为人们这样做了。一些程序员似乎使用脚本模式作为这种极端的指南,这样就产生了无意义的垃圾。一些管理层似乎对员工的信任度很低,以至于他们实际上要求严格遵守这样的脚本模式!

如果您发布了无操作断言,可能是某人计划进行实际断言并忘记修复它。但也可能是参与开发过程的人对设定模式有如此依赖,以至于他们无法看到这种说法的无用性。他们可能只是认为单元测试必须始终以至少一个断言结束,即使没有任何断言。

如果是这样他们就错了。

答案 3 :(得分:-1)

如果您只是等待并阅读方法的评论,您就会知道答案 a

修改

正如评论部分所指出的,如果操作人员想知道为什么有人会使用这种方法,我认为是调试类似的东西,我想调试如果当我添加3比1时它会是4,所以我会用它像这样

Debug.Assert(3+1 == 4);

如果它是4则一切都很好但如果不是4则会出现这样的消息框 pic 这将有更多有用的信息