标签: assert

19
推荐指数
2
解决办法
1万
查看次数

你使用断言吗?

这不是一个"问题"所以我正在制作CW.

assert
Run Code Online (Sandbox Code Playgroud)

关键字很棒!

它应该让你觉得你的自己对你编写的代码更有信心,但是,直到今天,当我创建一个小型测试类(<20行)时,我意识到自从它被引入以来从未使用它.

哎呀!我几乎没有使用记录器,这确实非常有用,但直到今天我才意识到我不使用断言.

你使用断言吗?如果不是,那是什么原因?

java assert assertions

18
推荐指数
4
解决办法
2759
查看次数

异常与错误代码与断言

我正在开发一个生成设备报告的库.generate_report (const std::string& no)由于各种原因,成员函数可能会失败:

  1. 报告号无效.
  2. 无效状态(report_generator是FSM)
  3. 没有设备处于活动状态
  4. 报告生成期间出错

哪种错误处理机制最适合这些错误?

  • 只是回来truefalse
  • 返回错误代码
  • 断言并记录
  • 抛出异常
  • 以上的任何组合

一些上下文信息:正常的工作流程如下.用户激活设备,从列表中选择报告并单击"生成".

编辑:感谢您的回复!对我来说,现在很清楚何时使用断言以及何时进行错误处理.至于错误处理,错误代码和异常都有利有弊.我想我会考虑异常(并为上述错误创建四个类),但我还不确定.我总是想到"意外情况"的例外情况.无效的报告编号并非真正意外.有什么建议?:)

c++ error-handling assert exception

18
推荐指数
4
解决办法
1万
查看次数

断言失败时如何打印附加信息?

如果assert失败,通常会想要打印其他信息.一种方法是这样的:

assert(vec.size() > i || 
  !(std::cerr << "False: " << vec.size() << ">" << i))
Run Code Online (Sandbox Code Playgroud)

这样,当assert失败时打印实际尺寸.但它很难看,并且很容易忘记!,这将使断言条件成立,程序将继续.

如上所述,人们使用什么来打印关于断言失败的其他信息?

c++ debugging assert

18
推荐指数
2
解决办法
1万
查看次数

如何正确使用Rhino.Mocks AssertWasCalled()?

我打电话_mocks.ReplayAll(),然后一个或多个_mockedObject.AssertWasCalled()然后_mocks.VerifyAll().但它告诉我"当模拟对象处于记录状态时,此操作无效".

[Test]
public void SetStateExecuting_Should_Set_State_To_Pause_And_Not_Change_GlobalState_When_GlobalState_Is_Paused()
{
    var task = new Task { ID = 1, TimeZone = -660, GlobalState = TaskState.Paused };
    _taskDataProvider.Expect(p => p.StateUpdate(task.ID, task.TimeZone, TaskState.Paused));
    _mockRepository.ReplayAll();
    _manager.SetStateExecuting(task);
    _taskDataProvider.AssertWasNotCalled(p => p.GlobalStateUpdate(task.ID, 
                                                                  TaskState.Executing));
    _mockRepository.VerifyAll();
}
Run Code Online (Sandbox Code Playgroud)

调用正确的顺序是什么,以便这些方法正常工作?

c# nunit assert rhino-mocks

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

Assert.AreEqual不会在IEnumerable实现上使用我的.Equals覆盖

我有一个PagedModel类,它实现IEnumerable只返回ModelData,忽略分页数据.我还重写了Equals和GetHashCode,以允许比较两个PagedModel对象的ModelData,PageNumber和TotalPages以及PageSize.

这是问题所在

Dim p1 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

Dim p2 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

p1.Equals(p2) =====> True
Assert.AreEqual(p1, p2) ======> False!
Run Code Online (Sandbox Code Playgroud)

看起来NUnit调用它的内部EnumerableEqual方法来比较我的PagedModel而不是使用我提供的Equals方法!有没有办法覆盖这种行为,或者我是否必须编写自定义断言.

ienumerable nunit assert

18
推荐指数
1
解决办法
2230
查看次数

C++断言:断言宏中表达式的优先级

在C++中:

  assert(  std::is_same<int , int>::value  ); // does not compile

  assert( (std::is_same<int , int>::value) ); // compiles
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?

c++ assert operator-precedence c-preprocessor

18
推荐指数
2
解决办法
945
查看次数

为什么在junit中assertEquals和assertSame为两个实例同一个类返回相同的结果?

根据文件

assertEquals()断言两个对象是相等的.

assertSame()断言两个对象引用同一个对象.

所以我期待如果我有一个类似下面的课程

class SomeClass {}
Run Code Online (Sandbox Code Playgroud)

然后

SomeClass someClass1= new SomeClass();
SomeClass someClass2= new SomeClass();
assertSame(someClass1,someClass2); // fail
assertEquals(someClass1,someClass2); // fail
Run Code Online (Sandbox Code Playgroud)

assertEquals应该传递,assertSame应该失败,因为两个类的值相等但它们具有不同的引用位置.

由于我在两种情况下都失败了,那么我的问题是这两者之间有什么区别?

java junit assert equals

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

是否可以在Python中更改PyTest的assert语句行为

我正在使用Python断言语句来匹配实际和预期的行为。我对这些没有控制权,好像有一个错误测试用例中止了一样。我想控制断言错误,并要定义是否要在失败断言时中止测试用例。

我还想添加一些类似的内容,如果存在断言错误,则应该暂停测试用例,并且用户可以随时恢复。

我不知道该怎么做

代码示例,我们在这里使用pytest

import pytest
def test_abc():
    a = 10
    assert a == 10, "some error message"
Run Code Online (Sandbox Code Playgroud)

Below is my expectation

当assert抛出assertionError时,我应该可以选择暂停测试用例,并且可以调试并稍后恢复。对于暂停和恢复,我将使用tkinter模块。我将做一个断言功能如下

import tkinter
import tkinter.messagebox

top = tkinter.Tk()

def _assertCustom(assert_statement, pause_on_fail = 0):
    #assert_statement will be something like: assert a == 10, "Some error"
    #pause_on_fail will be derived from global file where I can change it on runtime
    if pause_on_fail == 1:
        try:
            eval(assert_statement)
        except AssertionError as e:
            tkinter.messagebox.showinfo(e)
            eval (assert_statement)
            #Above is to raise the …
Run Code Online (Sandbox Code Playgroud)

python testing assert pytest

18
推荐指数
3
解决办法
466
查看次数

如何在C/C++中将assert放入发布版本中

我只需要运行ship build,我需要在发布版本中断言某些条件以查看问题是否已修复.我该怎么做?

c c++ assert release

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