标签: assertions

家谱软件中的循环

我是一些家庭树软件的开发者(用C ​​++和Qt编写).在我的一位客户向我邮寄错误报告之前,我没有遇到任何问题.问题是客户有两个孩子和自己的女儿,因此,他因错误而无法使用我的软件.

这些错误是我处理家族图的各种断言和不变量的结果(例如,在走一个循环之后,程序声明X不能同时是Y的父亲和祖父).

如何在不删除所有数据断言的情况下解决这些错误?

c++ graph cycle assertions family-tree

1594
推荐指数
14
解决办法
23万
查看次数

在Python中使用"assert"有什么用?

我一直在阅读一些源代码,在一些地方我已经看到了它的用法assert.

这究竟是什么意思?它的用途是什么?

python assert assertions

860
推荐指数
15
解决办法
67万
查看次数

581
推荐指数
10
解决办法
45万
查看次数

如何使用Assert.Throws来断言异常的类型?

如何使用Assert.Throws断言异常的类型和实际的消息措辞.

像这样的东西:

Assert.Throws<Exception>(
    ()=>user.MakeUserActive()).WithMessage("Actual exception message")
Run Code Online (Sandbox Code Playgroud)

我正在测试的方法抛出多个相同类型的消息,使用不同的消息,我需要一种方法来测试是否根据上下文抛出了正确的消息.

c# nunit exception assertions

226
推荐指数
5
解决办法
12万
查看次数

我什么时候应该使用Debug.Assert()?

我已经是一名专业软件工程师,已经有一年的时间了,已经获得了CS学位.我已经知道C++和C中有一段时间的断言,但直到最近才知道它们在C#和.NET中存在.

我们的生产代码不包含任何断言,我的问题是......

我应该在生产代码中开始使用Asserts吗?如果是这样,它的使用何时最合适?这样做会更有意义吗?

Debug.Assert(val != null);
Run Code Online (Sandbox Code Playgroud)

要么

if ( val == null )
    throw new exception();
Run Code Online (Sandbox Code Playgroud)

language-agnostic testing defensive-programming exception assertions

217
推荐指数
14
解决办法
5万
查看次数

在JUnit断言中比较数组,简洁的内置方式?

是否有一种简洁的内置方法在JUnit中对两个类似类型的数组进行等于断言?默认情况下(至少在JUnit 4中)它似乎在数组对象本身上进行实例比较.

EG,不起作用:

int[] expectedResult = new int[] { 116800,  116800 };
int[] result = new GraphixMask().sortedAreas(rectangles);
assertEquals(expectedResult, result);
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动完成:

assertEquals(expectedResult.length, result.length);
for (int i = 0; i < expectedResult.length; i++)
    assertEquals("mismatch at " + i, expectedResult[i], result[i]);
Run Code Online (Sandbox Code Playgroud)

..但有更好的方法吗?

java arrays junit assertions

145
推荐指数
6
解决办法
10万
查看次数

R在python中有一个断言语句吗?

一个声明,检查某些内容是否为真,如果没有则打印给定的错误消息并退出

assert language-design r assertions

96
推荐指数
3
解决办法
2万
查看次数

Eclipse:启用断言

我正在运行Eclipse Galileo.如何在Eclipse中启用断言?

正如其他网站所建议的那样,我尝试添加参数:-ea.我也尝试将编译器合规性级别更改为1.4.这些建议都没有奏效.

java eclipse compiler-construction assertions

93
推荐指数
4
解决办法
7万
查看次数

Debug.Assert vs Exception Throwing

我已经阅读了很多关于如何以及何时使用断言的文章(以及在StackOverflow上发布的其他几个类似问题),我对它们理解得很好.但是,我仍然不明白应该驱使我使用什么样的动机Debug.Assert而不是抛出一个普通的例外.我的意思是,在.NET中,对失败的断言的默认响应是"停止世界"并向用户显示一个消息框.虽然可以修改这种行为,但我觉得这样做非常烦人和多余,而我可以改为抛出一个合适的异常.这样,我可以在抛出异常之前轻松地将错误写入应用程序的日志,而且,我的应用程序不一定会冻结.

那么,为什么我应该使用Debug.Assert而不是普通的例外呢?将断言放在不应该出现的地方可能会导致各种"不需要的行为",所以在我看来,我真的没有通过使用断言而不是抛出异常来获得任何东西.你同意我的意见,还是我在这里遗漏了什么?

注意:我完全理解"在理论上"(调试与发布,使用模式等)之间的区别是什么,但正如我所看到的,我最好抛出异常而不是执行断言.因为如果在生产版本上发现了一个bug,我仍然希望"断言"失败(毕竟,"开销"非常小),所以我最好不要抛出异常.


编辑:我看到它的方式,如果断言失败,这意味着应用程序进入某种已损坏的意外状态.那么我为什么要继续执行呢?应用程序是否在调试版或发行版上运行并不重要.两者都是如此

c# exception assertions

91
推荐指数
4
解决办法
2万
查看次数

断言与JUnit断言

今天我看到了一个带有java断言而不是JUnit断言的JUnit测试用例 - 是否有优势或缺点优先于另一个?

java junit assert assertions

75
推荐指数
4
解决办法
3万
查看次数