标签: assert

可以使用Boost或STL显示自定义字符串的C++断言?

我真的希望能够:(在C++中)

assert( num > 0, "The number must be greater than zero!");
Run Code Online (Sandbox Code Playgroud)

在C#XNA中,他们有一个方法可以完成这个:

Debug.Assert( num > 0, "The number must be greater than zero!");
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,以便运行时给我一个意义完整的错误,而不仅仅是"断言失败"错误?

c# c++ testing boost assert

0
推荐指数
2
解决办法
539
查看次数

C#:不使用第三方框架进行单元测试?

单元测试应该在调试模式还是发布模式下运行?

我使用的是Visual Studio Standard Edition 2005,它没有任何单元测试框架.由于我也不想使用任何其他第三方单元测试框架,我曾经Debug.Assert在所有单元测试方法中执行实际测试.但是,Debug.Assert仅适用于调试模式.

是否有等效的发布模式或是否有其他替代方案(不使用第三方工具)?

c# testing unit-testing assert visual-studio-2005

0
推荐指数
1
解决办法
1033
查看次数

Java:关于断言行为的问题

我有这段代码

import java.util.ArrayList;
import java.util.List;

public class AssertTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        assert(list.add("test")); //<-- adds an element

        System.out.println(list.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

0 
Run Code Online (Sandbox Code Playgroud)

为什么输出列表为空?断言如何表现在这里?先感谢您!

java assert

0
推荐指数
2
解决办法
780
查看次数

assertEquals(obj,obj)返回失败的测试

嗯,我有一个货币对象,允许我添加其他货币对象.我尝试assertEquals()在java中测试我的代码是否正常,但后来失败了.

我非常肯定我的代码是正确的(System.out.println返回正确的答案),我想我只是assertEquals以错误的方式使用.T_T

如果我想知道是否myObj1 == myObj2进行测试,我究竟能使用什么?

**in my test.java**    
assertEquals(new Money(money1.getCurrency(),new Value(22,70)),money1.add(money2));

**in my money class**
public class Money {
    Currency currency;
    Value value;

    //constructor for Money class
    public Money(Currency currency, Value value) {
        super();
        this.currency = currency;
        this.value = value;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }

    //must have same currency
    public Money add(Money moneyToBeAdded){
        Money result = new Money(moneyToBeAdded.currency, new Value(0,0)); …
Run Code Online (Sandbox Code Playgroud)

java tdd unit-testing assert

0
推荐指数
1
解决办法
2437
查看次数

单位测试HFT股票价格 - 由于价格波动,断言不断失败

对于检索实时股票价格的应用程序,我发现我的单元测试断言由于两个调用之间的价格波动而返回假阴性,这些调用填充了包含expectedactual测试值的变量.

虽然这是可以预期的,但我希望听到有关如何解决这个问题的不同方法.我最初的想法是允许波动幅度(检索到的股票价格之间差异约为2%)

这是向Yahoo发出Web请求以检索股票价格的代码.


    public string makeWebRequest(string stockSymbol, string dataRequestID)
    {
        string request = webClient.DownloadString("http://finance.yahoo.com/d/quotes.csv?s=" + stockSymbol + 
                                                  "&f=" + dataRequestID).Replace("\r\n", "").Replace("\"", "");

        if (request.Equals("N/A") || request.Equals("0"))
            return "0.00";

        return request;
    }

    public string getPrice(string stockSymbol)
    {
        return makeWebRequest(stockSymbol, "l1");
    }
Run Code Online (Sandbox Code Playgroud)

这是单元测试,它对股票价格进行"硬编码"(已知是成功的)Web请求并将结果分配给expected变量.然后,执行另一个调用,以便仅使用应用程序object.function检索价格,然后将其分配给actual变量.

呼叫之间的增量为300毫秒


    [TestMethod]
    public void getPrice()
    {
        string expected = request.DownloadString("http://finance.yahoo.com/d/quotes.csv?s=" + testSymbol + "&f=l1").Replace("\r\n", "").Replace("\"", "");
        string actual = yahoo.getPrice(testSymbol);

        Assert.AreEqual(expected, actual);
    }
Run Code Online (Sandbox Code Playgroud)

有什么建议?或者我应该学会忍受它?

c# unit-testing assert mstest

0
推荐指数
1
解决办法
129
查看次数

将assert()与消息一起使用

是否有可能在断言错误上写一条消息?

例如,使用#include <assert.h>,我只能写:

void foo(int a, int b) {
  assert (a != b);
}
Run Code Online (Sandbox Code Playgroud)

然而,在一个错误我想看到的价值ab.我怎样才能做到这一点?

c c++ assert

0
推荐指数
2
解决办法
2157
查看次数

断言两位小数时出错

任何人都可以帮助我理解,因为预期值和实际值在ToString()方法中有不同的结果.当我为我打开手表时它是相同的值.

谢谢

码:

    [TestMethod]
    public void SerializeDecimalWithTwoDecimals()
    {
        var expected = decimal.Round(1.00M,2);
        var actual = decimal.Round(1M,2);

        Assert.AreEqual(expected.ToString(), actual.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

c# assert decimal

0
推荐指数
1
解决办法
353
查看次数

Junit等待并处理异常后断言

在第一次和第二次通话时抛出的方法:

public void foo() throws Exception
Run Code Online (Sandbox Code Playgroud)

测试:

@test
public void testFooThrowsAtFirstAndSecondTime(){
    boolean thrown;
    try {
       foo();
    } catch (Exception e) {
       thrown = true;
    }
    assertTrue(thrown);

    thrown = false;
    try {
       foo();
    } catch (Exception e) {
       thrown = true;
    }
    assertTrue(thrown);

    foo();
}
Run Code Online (Sandbox Code Playgroud)

你能帮我找到更好的解决方案吗?使用Mockito获得更好的解决方案也是可以接受的.

我的意思是更好,如果我可以在我的测试中避免尝试/捕获甚至多次尝试/捕获.在其他语言或jAssert我认为即使在春天也有如下陈述:

assertThrows(method(..)) //PseudoCode
Run Code Online (Sandbox Code Playgroud)

我认为与Mockito或JUnit 4.x有类似的事情.

我知道

@Test(expected=Exception)
Run Code Online (Sandbox Code Playgroud)

但是,如果我期待一次投掷并且测试结束之后,这将是可接受的.

java junit assert exception-handling mockito

0
推荐指数
1
解决办法
1816
查看次数

断言如何影响Python中的变量赋值?

我在Python 2.7中遇到列表别名或变量赋值的问题.我将向您展示一个最小的例子.有和没有断言两种不同的结果,我不知道断言为什么/如何影响这一点.

不知何故,当我向object_list下面显示的内容添加时,它会覆盖一个属性:

class Object1(object):                                                                                 

    def __init__(self):                                                                                    
        self.object_list = []  

    def add_thing(self, thing):                                                                                          
        # this next line makes all the difference
         assert thing.name not in [thing.name for thing in self.object_list], 'agent id already exists, use another one'
        self.object_list.append(thing)

class Thing(object):

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

这是一个最小的例子:

随着断言

mfd = Object1()
myAgent = Thing('blah')
myAgent_2 = Thing('blew')

mfd.add_thing(myAgent)
mfd.add_thing(myAgent_2)

print mfd.object_list

>> [blah, blah]
Run Code Online (Sandbox Code Playgroud)

没有断言

mfd = Object1()
myAgent = …
Run Code Online (Sandbox Code Playgroud)

python assert list assertions python-2.7

0
推荐指数
1
解决办法
99
查看次数

如何断言列表中是否存在以给定枚举作为属性的对象?

如果a class被定义为

public class MyClass {
    private long id;
    private MyEnum myEnum;
    // getter and setters
}
Run Code Online (Sandbox Code Playgroud)

MyEnumClass定义为

public enum MyEnum {
    VALUE_A, VALUE_B, VALUE_C;
}
Run Code Online (Sandbox Code Playgroud)

测试如何确保a List<MyClass>不包含MyClasswhere的任何实例MyClassenum例如,是VALUE_C

java assert

0
推荐指数
1
解决办法
48
查看次数