标签: assertions

Cobertura覆盖和断言关键字

我对Cobertura测量的单元测试的线路覆盖范围很痛苦,因为我的assert测试中没有涉及的声明.我应该测试assert离子,有没有办法让Cobertura忽略它们,这样它们不会影响我的测试覆盖率?

java unit-testing code-coverage cobertura assertions

6
推荐指数
2
解决办法
2611
查看次数

断言该值等于任何期望值集合

NUnit 是否提供了一个约束来确定实际值是否是给定的可枚举或数组的元素,换句话说,它等于多个预期值中的任何一个?就像是:

Assert.That(actual, Is.EqualToAnyOf(new[] { 1, 2, 3 }))
Run Code Online (Sandbox Code Playgroud)

也就是说,要指出的是,实际值是单个值。我希望值是1, 2, 或3。断言

Assert.That(actual, Contains.Element(expected))
Run Code Online (Sandbox Code Playgroud)

检查逻辑上相同,但意图相反:这里我们有一个实际值的集合,并期望其中有一个值。

此外,我发现了这些,但它们都不适合:

Assert.That(actual, Is.EqualTo(expected)) // only allows one value
Assert.That(actual, Is.InRange(start, end)) // only works for consecutive numbers
Assert.That(actual, Is.SubsetOf(expected)) // only works if actual is an enumerable
Assert.That(expected.Contains(actual)) // meaningless "expected: true but was: false" message
Run Code Online (Sandbox Code Playgroud)

.net c# nunit fluent-interface assertions

6
推荐指数
2
解决办法
7818
查看次数

来自assert_that() 的警告而不是错误?

我正在使用 R 的assertthat 包,并且希望(暂时)在断言失败时输出警告而不是错误。使用assertthat 包最简单的方法是什么?

我意识到想要警告而不是错误有点违背了断言的用途。从长远来看,我们确实希望在断言失败时输出错误。从短期来看,我们仍然希望代码即使在输入错误的情况下也能运行,因为输入错误的输出目前仍然“足够好”。

一个简单的例子:假设我有一个函数,将 x 作为输入并输出 x+5。如果 x!=3 我想输出警告。由于我们最终将使用assert_that,因此如果我们可以使用assertthat 包来发出警告,那就太好了。

从长远来看,我们将使用这个:

> x <- 3
> fn <- function(x) {assert_that(x==3); return(x+5)}
> fn(3)
[1] 8
> fn(4)
 Error: x not equal to 3 
Run Code Online (Sandbox Code Playgroud)

从短期来看,这是我迄今为止最好的:

> fn <- function(x) {if(!see_if(x==3)) warning(validate_that(x==3)); return(x+5)}
> fn(3)
[1] 8
> fn(4)
[1] 9
Warning message:
In fn(4) : x not equal to 3
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我正在寻找更简洁的解决方案(最好的情况是将“output_warning”参数传递给assert_that,但我认为不存在)。

r assertions assertthat

6
推荐指数
1
解决办法
1971
查看次数

JUnit断言:检查Object是否等于String

我已Map声明如下:

Map<String, Object> data
Run Code Online (Sandbox Code Playgroud)

我把String它放进去并验证它的价值如下:

assertEquals("value", data.get("key"));
Run Code Online (Sandbox Code Playgroud)

现在,我想重写验证assertThat而不是使用assertEquals.我尝试过以下方法:

assertThat(data.get("key"), equalTo("value"));
Run Code Online (Sandbox Code Playgroud)

当然,由于类型不匹配,它不起作用:

Wrong 2nd argument type. Found: 'org.hamcrest.Matcher<java.lang.String>', required: 'org.hamcrest.Matcher<? super java.lang.Object>' less...

第一个参数的显式类型转换有String帮助,但我想避免它.例如assertEquals,不需要类型转换.那么,如何使用该方法检查Map上面声明的放入对象的值是否等于特定值?StringassertThat

java junit android assertions

6
推荐指数
1
解决办法
5894
查看次数

如何否定 gtest 中的匹配器断言或期望?

我想检查 gtest 中的向量是否不为空,但我想更一般地了解如何检查匹配器的否定。

我通常检查大小大于零

EXPECT_THAT( vector.size(), Gt( 0 ) );
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写自己的匹配器

MATCHER( IsNotEmpty, !negation ? "isn't empty" : "is empty" ) {
if ( !arg.empty() ) {
    return true;
}
*result_listener << "whose size is " << arg.size();
return false;
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否可以简单地否定任何匹配器

c++ tdd unit-testing googletest assertions

6
推荐指数
1
解决办法
1825
查看次数

使用Rubberduck单元测试,如何找出多个断言中的哪一个失败?

我正在使用Rubberduck对我的VBA实现进行单元测试.当Assert.IsTrue在一个TestMethod中使用相同类型的多个Assert(例如)时,测试结果并没有告诉我哪个失败,据我所见.

有没有办法找出哪个Assert失败或者这是在Rubberduck未来路线图上?当然我可以添加自己的信息,例如Debug.Print在每个Assert之前使用,但这会导致很多额外的代码.

我知道在一次测试中对于多个Assert有不同的看法,但我选择在我的情况下使用它们,这个讨论已经在其他地方讨论过了 .

vba unit-testing assertions vbe rubberduck

6
推荐指数
1
解决办法
419
查看次数

JavaScript中的断言

广泛阅读JavaScript中的各种断言框架.有没有任何事实上/最常见的"标准"库/框架?选择一个 - 哪个点最值得注意?

在生产模式下,我能想到的(唯一)要求是接近于零的性能开销.

javascript assert assertions

5
推荐指数
1
解决办法
7854
查看次数

在递归属性中使用队列

我有一些来自1位串行端口的数据,它有多个字节的变量长度,如下所示:

byte expected_1 [$] = {8'hBA, 8'hDD, 8'hC0, 8'hDE};
byte expected_2 [$] = {8'h01, 8'h23, 8'h45, 8'h67, 8'h89, 8'hAB, 8'hCD, 8'hEF};  
Run Code Online (Sandbox Code Playgroud)

在每个正时钟边沿,发送一位.我需要testbench对序列的追求(将来可能有数千个),所以我想在系统verilog中使用断言自动化该过程.新的2012标准允许将队列传递给属性,但队列是否可以通过递归属性发送?我收到一些关于分层引用的错误.

这是我迄今为止(从@格雷格帮助这里):

default clocking sck @(posedge sck); endclocking : sck  

sequence seq_serial(logic signal, logic [7:0] expected); // check each bit
  byte idx = 7;
  (signal == expected[idx], idx--)[*8];
endsequence : seq_serial

property recurring_queue(bit en, logic data, byte data_e [$])
  int queue_size = data_e.size;
  logic [7:0] expected = data_e.pop_front(); 

  if(queue_size != 0) (
    !en throughout (seq_serial(data, expected) ##1 …
Run Code Online (Sandbox Code Playgroud)

verification verilog assertions system-verilog system-verilog-assertions

5
推荐指数
1
解决办法
474
查看次数

如何在Selenium Python绑定中等待并获取Span对象的值

我的网页上有以下代码.

<div id="" class="user_acc_setails">
<ul id="accDtlUL">
<li>First Name: <span id="f_name">Anuja</span></li>
Run Code Online (Sandbox Code Playgroud)

到页面加载时,未设置Sapn的值.设置值需要很短的时间.我想等待并在我的Python文件中获取该值.

我目前正在使用以下代码,

element = context.browser.find_element_by_id('f_name')
assert element.text == 'Anuja'
Run Code Online (Sandbox Code Playgroud)

但它给了我一个AssetionError.我怎么解决这个问题?

谢谢

python selenium unit-testing assertions testcase

5
推荐指数
2
解决办法
8362
查看次数

如何在python中运行时捕获断言(在C++中引起)

我想在python应用程序中嵌入C++.我不想使用Boost库.

如果C++函数做断言,我想抓住它并在我的python应用程序中打印错误或获取一些详细信息,如python脚本中的行号导致错误.主要是"我想进一步在python执行流程中"

我该怎么做?我找不到任何函数来获取Python API或C++中的详细断言信息.

C++代码

void sum(int iA, int iB)
{
    assert(iA + iB >10);
}
Run Code Online (Sandbox Code Playgroud)

Python代码

from ctypes import * 

mydll = WinDLL("C:\\Users\\cppwrapper.dll")

try:
    mydll.sum(10,3)
catch:
print "exception occurred"

# control should  go to user whether exceptions occurs, after exception occurs if he provide yes then continue with below or else abort execution, I need help in this part as well

import re
for test_string in ['555-1212', 'ILL-EGAL']:
    if re.match(r'^\d{3}-\d{4}$', test_string):
        print test_string, 'is a valid US local phone …
Run Code Online (Sandbox Code Playgroud)

c++ python windows ctypes assertions

5
推荐指数
1
解决办法
956
查看次数