标签: assertion

什么是C++中的合同17

我正在阅读B. Stroustrup的关于C++ 17思考合同,并协助一个小小的演讲,谈论他们,但我不确定我是否真的理解它们.

所以我有一些问题,如果有可能用一些例子来说明它们:

  • 合同是否是经典的更好替代品,assert()它们应该一起使用吗?对于软件开发人员来说,简单的合同是什么?

  • 合同会对我们处理异常的方式产生影响吗?如果是,我们应该如何使用例外和合同?

  • 使用合同是否意味着执行时的开销?我们是否允许在发布代码上停用它们?

提案N4415编辑:

可以编写Vector类的索引操作符的前置条件合约:
T& operator[](size_t i) [[expects: i < size()]];

类似地,ArrayView类的构造函数上的条件后约定可表示为: ArrayView(const vector<T>& v) [[ensures: data() == v.data()]];

c++ design-by-contract assertion c++17

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

在Linux内核中使用断言

assert()在Linux中有一个问题:我可以在内核中使用它吗?

如果不是,你通常使用什么技术,例如我不想输入NULL指针?

linux assert assertions linux-kernel assertion

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

JMeter如何不失败500内部服务器错误

我使用JMeter作为单元测试工具,在参数化调用中,我希望一些响应是500内部服务器错误.我正在使用BeanShell Assertions来检查响应.

如果响应包含指定的文本,我希望500个内部服务器错误中的一些不被标记为失败.所有500个服务器错误都标记为失败.是否有可能改变行为?

以下是BeanShell Assertion的摘录.

if (ResponseCode.equals("500")) {
    Failure = false;
    String respData = new String(ResponseData);

    if (! respData.contains("specific Text")) {
        Failure = true;
        FailureMessage = "500 Internal Server Error:  Unexpected Response.   " + 
            "Response Message: " + respData;
    }
}  
Run Code Online (Sandbox Code Playgroud)

谢谢你们

jmeter assertion

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

任何想法如何避免DDTokenCache中的这个断言及其含义?

我正在使用NSDataDetectorNSTextCheckingTypeLink来搜索字符串中的链接(例如https://stackoverflow.com/questions).一般来说,它工作正常,但当字符串包含某些非常长的链接(200 +字符)后跟一个空格和另一个字时,我得到这个断言:

> DDRequire failed: the following assertion will only be logged once
> 
> assertion on
> /SourceCache/MobileDataDetectorsCore/MobileDataDetectorsCore-154/Sources/PushDown/DDTokenCache.c:310
> "delta >= 0" failed :Bad shift in
> DDTokenCacheMoveStreamOffset, aborting
Run Code Online (Sandbox Code Playgroud)

这是导致这种情况的文本:

> blog.somethingorother.com/2011/storynameetcmorestuff/utm_source/eedburnerutmmediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign/FeedanutmcontentGooglFeedfetcher/eedburnerutm_mediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign HEY
Run Code Online (Sandbox Code Playgroud)

有谁知道这背后是什么或对此有任何其他见解?

parsing objective-c assertion ios

27
推荐指数
1
解决办法
1797
查看次数

断言(0)是什么意思?

我的一次考试中有这样的问题,我仍然不太清楚如何回答这个问题.我知道断言是测试你的程序的方法,但是我不太清楚什么assert(0)是检查.这是一个棘手的问题吗?它总会失败,但我不明白为什么.什么检查?

任何解释都会很棒,谢谢.

c c++ assert assertion

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

得到奇怪的调试器消息:断言失败:(cls),函数getName:这是什么?

自从我从Xcode 3.2.3升级到3.2.4和iOS 4.0.1升级到iOS 4.1 SDK后,当我在代码中设置断点并单步执行指令时,在每一步,调试器都会吐出一个或多个线:

Assertion failed: (cls), function getName, file /SourceCache/objc4_Sim/objc4-427.1.1/runtime/objc-runtime-new.m, line 3939

它不会发生在特定的行或特定的指令上.我的代码中有一些断点,每次遇到其中一个断点时,调试器就会开始喷出这些消息.由于程序正常工作,它似乎没有任何不利影响.当有数十行时,在控制台中检索信息会非常烦人.我确定他们没有显示任何东西,但我没有发现问题可能是什么以及可能导致它的指令.如果我没有遇到断点,那么我没有看到任何这些线.我多次清理并重建我的项目无济于事.

有人知道这是什么吗?

debugging xcode assertion ios

25
推荐指数
2
解决办法
7012
查看次数

xUnit等于MSTest的Assert.Inconclusive

什么是以下MSTest代码的xUnit等价物:

Assert.Inconclusive("Reason");
Run Code Online (Sandbox Code Playgroud)

这给出了黄色测试结果,而不是通常的绿色或红色.我想断言由于某些条件而无法运行测试,并且在满足这些条件后应该重新运行测试.

unit-testing assert mstest xunit assertion

22
推荐指数
2
解决办法
4116
查看次数

是否在Java良好实践中积极抛出AssertionError?

通过Joshua Bloch的"Effective Java - Second Edition",我偶然发现了第152页的以下代码:

double apply(double x, double y) {
    switch(this) {
        case PLUS:   return x + y;
        case MINUS:  return x - y;
        case TIMES:  return x * y;
        case DIVIDE: return x / y;
    }
    throw new AssertionError("Unknown op: " + this);
}
Run Code Online (Sandbox Code Playgroud)

现在令我困惑的是,AssertionError积极抛出.这被认为是好习惯吗?根据我的理解,断言用于不干扰代码,以便在没有启用断言的情况下启动java编程并且因此不执行断言语句时,行为不会改变.如果我AssertionException在没有启用断言的情况下运行程序时,我会感到很困惑.

即使我理解示例情况可能经常发生,你分析了几个不同的选项,如果它们都不是,你应该抛出异常.

那么抛出AssertionException这里是一种好习惯,还是抛弃另一种更好?如果是这样,哪一个最适合?也许IllegalArgumentException


编辑澄清:我的问题不是关于我们是否应该抛出一个Error,但是如果我们想要抛出一个Exception或一个Error,它应该是什么?积极投掷AssertionErrors 是好的做法吗?文档说Thrown表示断言失败了,所以我觉得我们不应该主动抛出它.那是对的吗?


第二次编辑:明确的问题:AssertionError即使有可能,积极投掷或应该避免这种做法是否良好?(我猜读文档是后者)

java assertion

22
推荐指数
3
解决办法
5989
查看次数

如何断言数组的内容,对顺序无动于衷

我有一个最小的规格:

it "fetches a list of all databases" do
  get "/v1/databases"
  json = JSON.parse(response.body)
  json.length.must_equal           Database.count
  json.map{|d| d["id"]}.must_equal Database.all.pluck(:id)
end
Run Code Online (Sandbox Code Playgroud)

但是,这失败了:

Expected: [610897332, 251689721]
  Actual: [251689721, 610897332]
Run Code Online (Sandbox Code Playgroud)

我可以同时订购它们,但这会增加混乱:

json.map{|d| d["id"]}.sort.must_equal Database.all.pluck(:id).sort
Run Code Online (Sandbox Code Playgroud)

事实上,它map{}已经与测试有点无关并且增加了混乱,我宁愿不再添加更多.

是否有断言或助手来测试是否所有物品enumerator1都在enumerator2

ruby-on-rails minitest assertion

21
推荐指数
3
解决办法
9362
查看次数

在条件(if)语句中使用CodeCeption断言

我是CodeCeption的新手.

我想根据另一个断言结果做一个动作/断言,如下所示:

if ($I->see('message')){

    $I->click('button_close');

}
Run Code Online (Sandbox Code Playgroud)

有可能吗?我试过了,但没办法.可能断言结果不适用于IF,但还有其他选择吗?

提前致谢!

重要更新:

最后Codeception现在有了这个功能performOn!! http://codeception.com/docs/modules/WebDriver#performOn

php conditional if-statement assertion codeception

21
推荐指数
2
解决办法
7423
查看次数