标签: assert

C/C++是一个不是数字的int值?

这会发生吗?3断言,其中一个应该激活.

int nr = perform_calc();
assert( nr == 0);
assert( nr > 0);
assert( nr < 0);
Run Code Online (Sandbox Code Playgroud)

如果程序没有在g ++ 3.4.4上激活断言,是否会出现这种情况.

并且我没有可能更改代码以便在断言未激活的情况下打印数字.

有任何想法吗?

编辑:在阅读了几条评论后,我被迫编辑.显示代码?你为什么要做这个蠢事?我不相信!在哪里使用?从我的问题来看,显然我不会发布/更改代码,原因有以下几种:

  • 我是一个初学者并且对代码感到羞耻(那里没有犯罪,如果我发布它,肯定会更容易回答问题)
  • 我被要求只用很少的信息帮助一个朋友(不,我没有问他为什么你不能检查返回的数字,或者为什么他不能只添加一个断点).
  • 我在没有任何编译器的emacs中编写我的代码,并将其发送到编译它的远程服务器,运行它并且只有在出现问题时才能返回失败的断言.

如果你认为我是恶作剧或恶作剧你应该投票支持关闭线程.我会完全没问题.但是添加这样的不必要的评论只会让我想要一个"态度"的标志来实现.

我要感谢其他人的意见和答案,他们实际上试图解释并回答我的问题.

c c++ int assert numbers

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

使用RhinoMocks,如何断言调用了几种方法之一?

考虑以下服务接口:

public interface IServiceA
{
    void DoSomething(string s);
    void DoSomething(string s, bool b);
}

public interface IServiceB
{
    void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

IServiceB的实现取决于IServiceA,如下所示:

public class ServiceB : IServiceB
{
    private IServiceA _serviceA;

    public ServiceB(IServiceA serviceA)
    {
        _serviceA = serviceA;
    }

    public void DoSomething()
    {
        _serviceA.DoSomething("Hello", true);
    }
}
Run Code Online (Sandbox Code Playgroud)

就是 依赖项被注入到构造函数中。

现在考虑对该DoSomething()方法进行单元测试。我想断言,调用了IServiceA中的一种重载DoSomething方法,但是遵循一个普遍的原则,即单元测试对所测试方法的内部工作不应该了解太多,我希望与哪一个无关。称为两个重载。考虑以下单元测试:

[TestFixture]
public class ServiceBTests
{
    [Test]
    public void DoSomething_CallsServiceA()
    {
        var serviceAMock = MockRepository.GenerateMock<IServiceA>();
        var service = new ServiceB(serviceAMock);

        service.DoSomething();

        // Problem: How to check if EITHER:
        serviceAMock.AssertWasCalled(s …
Run Code Online (Sandbox Code Playgroud)

unit-testing assert dependency-injection rhino-mocks

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

.net StackFrame和当前行/列

我写了一个方法Assert():

[System.Diagnostics.Conditional("DEBUG")]
internal static void Assert(bool condition)
{
    if (!condition)
    {
        var message =
                "Line:" + (new System.Diagnostics.StackFrame(1)).GetFileLineNumber() + "\r\n" +
                "Column:" + (new System.Diagnostics.StackFrame(1)).GetFileColumnNumber() + "\r\n" +
                "Where:" + (new System.Diagnostics.StackFrame(1)).GetMethod().Name;
            Log("ASSERTION", message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么触发时我的行和列都等于0?它应该是调用Debug.Assert(false)的地方.

问候,

.net c# assert stack-frame

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

在c中有一个非致命的等同于断言吗?

我想写assert语句但不会中止该程序.所以也许使用与assert()完全相同的语法,但称为expect().当然我可以编写自己的,但断言非常聪明(例如,它不仅知道文件和行号,而且甚至知道不是TRUE的表达式).我当然可以深入了解库和Cv/Cc解决方案.但这是一个非常明显的通用请求,我无法相信已经没有一个好的解决方案了.这当然应该很容易找到...

c assert

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

如何禁用整个项目的断言?

我在Delphi中有一些代码,它们都有Assert语句.我知道有一个编译器指令{$C-},但有太多的单位要添加它.有没有办法让编译器命令行或dpr文件中的某个地方完成它?

delphi assert

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

python unittests assertEqual在失败时打印太多

在我正在运行的一系列测试中nosetests,assertEqual(a,b)失败,a并且b(相当长的字符串)被逐字打印填充屏幕,混淆了其他所有内容.您可以通过将其添加到您的一个测试用例来创建类似的情况:

def test_my_long_strings(self): 
    self.assertEqual('a'*5000, 'b'*5000)
Run Code Online (Sandbox Code Playgroud)

我试着设置--verbosity=0--debug-log=File,但他们都没有任何影响,这两个字符串仍印在屏幕上.

无论如何都要关闭assertEqual详细程度或将其重定向到除stderr之外的单独文件(还报告测试失败/通过)?

python assert error-logging nosetests python-unittest

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

当JVM在java程序中遇到断言语句时,它在内部做什么?

我是java中的断言概念的新手.我在哪里读过关于java中的断言概念,总是说,如果我们使用assert expression1:expression2,它将使用默认构造函数或AssertionError类中的七个构造函数之一,以防它失败. 但我怀疑的是,当assert语句失败时,谁实际上抛出了这个AssertionError错误?编译器是否会添加" throw new AssertionError(---) ",否则JVM将检查表达式并抛出AssertionError(如ArithmeticException,NullPointerException等...)?

java assert assertion

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

Specflow Contextual断言

我们使用Specflow,目前,我们的大多数断言都是使用Fluent Assertions完成的,例如:
myval.Should().NotBe(null)

一切都运行良好,但在某些情况下,我们希望相同的代码有时断言不确定,有时不会.

例如,假设我们有一个调用方法来安装AUT的步骤.
断言AUT可以正确安装的测试将使用此方法作为WHEN/THEN步骤的一部分.
在这种情况下,如果安装失败,我们希望正常进行并且无法通过测试.
GIVEN The AUT is NOT installed WHEN I install the AUT

但是,对于所有其他测试,可以将相同的方法作为GIVEN步骤的一部分或作为BeforeScenario/BeforeFeature挂钩的一部分调用,并且在该实例中,如果安装失败,则测试应该失败,因为它是不是测试本身失败,而是安装阶段. GIVEN the AUT is installed WHEN I perform function X of the AUT

所以在这个例子中,让我们假设WHEN I install the AUT第一个测试中的步骤定义,以及GIVEN the AUT is installed第二个测试中的步骤定义只是用类似的东西调用辅助方法AppFacade.Install()

当然,我们可以AppFacade.Install()使用条件等垃圾和所有其他辅助方法,但我想知道是否有人有更优雅的解决方案 - 即扩展断言引擎的方式,以便它自动应用这个逻辑 - 我看到没有障碍实现此目的的Specflow方面,您可以检查Specflow上下文对象以检测您所处的步骤类型.
理想情况下,我们希望坚持使用流利断言,但如果这过于复杂化,我们会愿意重新考虑.

c# automated-tests assert specflow fluent-assertions

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

使用Python断言 - 如何检查输入是否为整数?

我写了一个函数,它将一个数字作为输入.例如:

def return_it_back(n):
    return n
Run Code Online (Sandbox Code Playgroud)

我只需要使用assert检查输入是否为整数.所以,我写了一个测试函数:

def test():
    assert return_it_back("k"), "incorrect input"
test()
Run Code Online (Sandbox Code Playgroud)

Python没有显示"输入错误".不将断言return_it_back("K"),"不正确输入"需要打印的"不正确输入"?

python assert

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

std :: is_sorted的怪异行为

我正在学习c ++中的断言,并且遇到了std :: is_sorted的怪异行为。

给定一个比较器(c)和std :: strings的未排序向量(v)。我使用std :: sort(v.begin(),v.end(),comparator)。然后使用相同的参数调用std :: is_sorted。结果是错误的,为什么呢?

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <cassert>
int main(){
    auto comparator([](std::string a , std::string b) {return a.length() - b.length();} );
    std::vector<std::string> v {"y" , "yyyy" , "yy" ,
                                 "yy" , "yyyyyyy" , "yyy"};
    assert(false == std::is_sorted(v.begin() , v.end(),comparator));
    std::sort(v.begin(), v.end(),comparator);
    assert(true == std::is_sorted(v.begin() , v.end(),comparator));
}
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm assert compare

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