Questions tagged «assertions»

断言是一种软件结构,开发人员在其中声明(“断言”)他认为永远都是真实的条件。如果条件在某些语言中为假,则抛出异常,在其他语言中,将显示一条消息,而在其他语言中,程序将停止运行。

18
家族树软件中的循环
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是一些家谱软件(用C ++和Qt编写)的开发人员。在我的一位客户向我发送错误报告之前,我没有遇到任何问题。问题是该客户有两个孩子,并且有自己的女儿,结果,由于错误,他无法使用我的软件。 这些错误是由于我对要处理的族图的各种断言和不变性导致的(例如,经过一个循环后,程序指出X不能同时是Y的父亲和祖父)。 如何在不删除所有数据断言的情况下解决这些错误?



7
如何使用Assert.Throws声明异常的类型?
我如何使用Assert.Throws断言的类型和实际的消息措辞。 像这样: Assert.Throws<Exception>( ()=>user.MakeUserActive()).WithMessage("Actual exception message") 我正在测试的方法会抛出具有不同消息的相同类型的多个消息,并且我需要一种方法来测试是否根据上下文抛出正确的消息。

20
什么时候应该使用Debug.Assert()?
我已经获得CS学位,现在已经是专业软件工程师大约一年了。我已经在C ++和C中了解断言了一段时间了,但是直到最近才完全不知道它们存在于C#和.NET中。 我们的生产代码不包含任何断言,我的问题是…… 我应该在生产代码中开始使用Asserts吗?如果是这样,什么时候最合适使用它?这样做更有意义吗 Debug.Assert(val != null); 要么 if ( val == null ) throw new exception();

6
在JUnit断言中比较数组,简洁的内置方式?
在JUnit中是否有一种简洁的内置方法对两个相似类型的数组进行相等声明?默认情况下(至少在JUnit 4中),它似乎对数组对象本身进行了实例比较。 EG,不起作用: int[] expectedResult = new int[] { 116800, 116800 }; int[] result = new GraphixMask().sortedAreas(rectangles); assertEquals(expectedResult, result); 当然,我可以手动执行以下操作: assertEquals(expectedResult.length, result.length); for (int i = 0; i < expectedResult.length; i++) assertEquals("mismatch at " + i, expectedResult[i], result[i]); ..但是还有更好的方法吗?
159 java  arrays  junit  assertions 



8
Debug.Assert与异常抛出
我已经阅读了很多有关如何以及何时使用断言的文章(以及在StackOverflow上发布的其他一些类似问题),并且我对它们很了解。但是,我仍然不明白应该用哪种动机来促使我使用它,Debug.Assert而不是抛出一个明显的例外。我的意思是,在.NET中,对失败的断言的默认响应是“停止运行”并向用户显示消息框。尽管可以修改这种行为,但我发现这样做非常烦人和多余,而我可以抛出一个适当的异常。这样,在抛出异常之前,我可以轻松地将错误写入应用程序日志,此外,我的应用程序不一定会冻结。 那么,为什么我应该使用Debug.Assert而不是普通的例外呢?将断言放置在不应该出现的位置可能会导致各种“有害行为”,因此,根据我的观点,我真的没有通过使用断言而不是抛出异常来获得任何好处。您是否同意我的意见,或者我在这里错过了什么? 注意:我完全理解“理论上”的区别(调试与发行,使用模式等),但是据我所知,我最好抛出一个异常而不是执行一个断言。由于如果在生产版本中发现了错误,我仍然希望“断言”失败(毕竟,“开销”很小),所以我最好抛出一个异常。 编辑:我认为,如果断言失败,则意味着应用程序进入某种损坏的意外状态。那我为什么要继续执行呢?应用程序是在调试版本还是发行版本上运行都没有关系。两者都一样


5
有什么方法可以检查Python unittest assert是否可迭代不为空?
向服务提交查询后,我得到了字典/列表,并希望确保它不为空。我使用的是Python 2.7。 我很惊讶我没有assertEmpty为unittest.TestCase类实例找到任何方法。 现有的替代方案,例如: self.assertTrue(bool(d)) 和 self.assertNotEqual(d,{}) 和 self.assertGreater(len(d),0) 只是看起来不正确。 Python unittest框架中缺少这种方法吗?如果是,那么断言Iterable不为空的最Python方式是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.