标签: assertions

如何在C++中关闭ASSERT(x)?

我怀疑一些ASSERTION代码有副作用.我想关闭ASSERT,而不对我的代码编译方式进行任何其他更改.我正在使用MSVS2008.从调试切换到发布不会这样做会改变内存的初始化方式.

c++ assertions visual-studio

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

Debug.Assert()仅在单步执行时触发

我正在使用Visual Studio 2010编写.NET断言:

Debug.Assert(false, "Testing Debug.Assert");
Run Code Online (Sandbox Code Playgroud)

当我在这行代码上放置一个断点时,等到断点到达,然后让程序继续运行,一切正常:弹出"断言失败"对话框.但是,当我删除断点并重新运行应用程序时,将忽略Debug.Assert()语句.

有谁知道什么可能导致这种非常奇怪的行为?

.net c# debugging visual-studio-2010 assertions

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

c# - 使用OR条件断言

我正在检查三个字符的字符串

Assert.AreEqual(myString.Substring(3,3), "DEF", "Failed as DEF  was not observed");
Run Code Online (Sandbox Code Playgroud)

事情就在这里它可以DEF或者RES,现在要处理这个我能想到的是以下内容

bool check = false;
if( myString.Substring(3,3) == "DEF" || myString.Substring(3,3) == "RED" ) 
check = true;

Assert.IsTrue(check,"Failed");
Console.WriteLine(""Passed);
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在Assert中使用一些OR事物

ps我正在编写单元测试,是的,我将使用三元运算符代替....

c# unit-testing assertions

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

assert_select以单引号(撇号)内容失败

我的代码是

<h3 id="account_owner">This is Jhon's account</h3>
Run Code Online (Sandbox Code Playgroud)

测试此代码的行是

assert_select "h3#account_owner", "This is Jhon's account"
Run Code Online (Sandbox Code Playgroud)

测试失败并说

"这是Jhon的帐户"是预期的但是这是Jhon' s account'

我在"'"之间加了一个空格.因为它也转化为'在这个问题的输出上.有什么猜测?或者我该如何测试这条线?

integration-testing ruby-on-rails assertions minitest

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

Ruby minitest assert_output语法

我是minitest的新手,对红宝石来说仍然是新人,并且真的厌倦了试图谷歌这个问题没有结果.我真的很感激你的帮助:

ruby minitest中assert_output的确切语法是什么?

我在github或其他地方找到的所有内容似乎都使用括号.然而,当我不使用带有assert_output的块时,我收到一条错误消息,这是有意义的,因为此方法的定义包含yield语句.

但无论我尝试什么,我都无法使它发挥作用.

testclass.rb

class TestClass
  def output
    puts 'hey'
  end
end
Run Code Online (Sandbox Code Playgroud)

test_test.rb

require 'minitest/spec'
require 'minitest/autorun'
require_relative 'testclass'


class TestTestClass < MiniTest::Unit::TestCase 
  def setup
    @test = TestClass.new
  end

  def output_produces_output
    assert_output( stdout = 'hey' ) { @test.output}
  end   
end 
Run Code Online (Sandbox Code Playgroud)

我得到的是:

完成测试0.000000s,NaN测试/ s,NaN断言

0次测试,0次断言,0次失败,0次错误,0次跳过

我究竟做错了什么?它必须是一个非常明显的东西,但我无法弄清楚.谢谢你的帮助.

ruby unit-testing assertions minitest

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

来自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
查看次数

Intellitest为每个生成的测试添加断言的位置

在这里,我将通过一个例子来解释这个问题.最初的问题更抽象地提出了问题.不需要阅读它.

更新:问题为例

让我们说我们已经实现了这个buggy函数来找到int []的min:

public int MyMin(int[] data)
{
    int min = 1000;

    for (int i = 1; i < data.Length; i++)
    {
        if (data[i] < min)
        {
            min = data[i];
        }
    }

    return min;
}
Run Code Online (Sandbox Code Playgroud)

在这个函数上运行Intellitest给我们: 在此输入图像描述

注意,对于测试#4和#6,该函数由于其错误实现而未正确计算最小值.但是,这些测试正在通过,这是不希望的.

Intellitest不能神奇地确定我们的预期行为,MyMin并使测试失败.但是,如果我们可以手动指定这些测试的所需结果,那将是非常好的.

@michał-komorowski的解决方案是可行的,但对于每个测试用例,我必须重复其输入的PexAssumes.是否有更加优雅/干净的方式来为测试输入指定所需的输出?

原始问题

Intelitest生成可修改的参数化测试,并可在其中添加通用/全局断言.它还生成最大数量的输入,以最大化代码覆盖率.Intellitest将输入存储为单独的单元测试,每个测试都使用精心设计的输入调用参数化测试.

我正在寻找一种方法来为每个输入添加断言.

由于每个输入都作为单元测试函数存储在.g.cs文件中,因此可以在那里添加断言.问题是这些功能不应由用户自定义,因为它们将在后续运行中被Intellitest覆盖.

为每个单元测试添加断言的推荐方法是什么?

unit-testing assertions visual-studio-2015 intellitest

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

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
查看次数

如何测试API请求和响应与C#中的swagger定义匹配

我知道有一些实用程序可以测试API请求和响应与Java或PHP语言中的swagger定义(如SwaggerAssertions)相匹配,但我需要在C#中使用类似的东西在.NET平台中使用.

我一直在寻找类似于我的招摇定义的东西,但我找不到任何实用工具.你知道吗?C#中是否有任何库允许使用JSON模型作为参数进行断言?

非常感谢你!

.net c# assertions swagger

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

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

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

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

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

vba unit-testing assertions vbe rubberduck

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