标签: assert

在Nunit,C#中验证ArgumentException及其消息

在我在Nunit的测试程序中,我想通过验证消息来验证它是否正在获取写入Argument Exception.

    [Test]
    public void ArgumentsWorkbookNameException()
    {
        const string workbookName = "Tester.xls";
        var args = new[] { workbookName, "Sheet1", "Source3.csv", "Sheet2", "Source4.csv" };
        Assert.Throws(typeof(ArgumentException), delegate { var appargs = new ApplicationArguments(args); }, "Invalid ending parameter of the workbook. Please use .xlsx");

    }
Run Code Online (Sandbox Code Playgroud)

在测试完之后,当我在主程序中修改消息时,这不起作用.

        int wbLength = args[0].Length;

        // Telling the user to type in the correct workbook name file.
        if (args[0].Substring(wbLength-5,5)!=".xlsx")
        {
            throw new ArgumentException(
                "Invalid ending parameter of the workbook. Please use .xlsx random random");
        }
Run Code Online (Sandbox Code Playgroud)

无论我是否更改了消息,单元测试仍然通过.

我该怎么做?或者C#中没有这样的东西.我的同事说Ruby和RSPEC都有类似的选项,但他对C#并不是100%肯定.

c# nunit assert exception

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

python的`assert`语句有哪些可接受的用例?

如果我们处于腐败状态,我经常使用python的assert语句来检查用户输入并快速失败.我知道当使用-o(优化)标志的python时,assert会被删除.我个人不会在优化模式下运行我的任何应用程序,但感觉我应该远离断言只是在案件中.

写作感觉要干净得多

assert filename.endswith('.jpg')
Run Code Online (Sandbox Code Playgroud)

if not filename.endswith('.jpg'):
    raise RuntimeError
Run Code Online (Sandbox Code Playgroud)

这是断言的有效用例吗?如果没有,python assert声明的有效用例是什么?

python assert

30
推荐指数
4
解决办法
7024
查看次数

如何防止Debug.Assert(...)显示模式对话框

我有几个使用的库Debug.Assert(...).我认为这Debug.Assert(...)很好,我仍然希望它们执行,但我不希望它们阻止我的应用程序的执行.理想情况下,我只希望他们在某处登录.

鉴于我无法更改库的代码(我仍然希望在调试中编译并运行断言),如何阻止Debug.Assert(...)显示模式对话框?

另外,我想确保主程序在Assert发生时继续(与忽略按钮相同的行为).

谢谢!

.net c# assert c#-4.0

29
推荐指数
3
解决办法
9132
查看次数

"assert False"和"self.assertFalse"有什么优点或区别

我正在写测试,我听到有人说要使用self.assertFalse而不是assert False.为什么这样,有什么好处?

python unit-testing assert

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

在Linux内核中使用断言

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

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

linux assert assertions linux-kernel assertion

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

Python:断言变量是实例方法?

如何检查变量是否是实例方法?我正在使用python 2.5.

像这样的东西:

class Test:
    def method(self):
        pass

assert is_instance_method(Test().method)
Run Code Online (Sandbox Code Playgroud)

python methods assert instance

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

在Java中使用assert是一种好习惯吗?

我知道关键字assert存在于java中.但是我不记得看到使用它的代码.可能我正在使用异常并登录我可以使用它的地方.assert在java中使用关键字是一个好习惯吗?

编辑:我知道断言一般是一个很好的做法.我的问题是,更准确一点,如果在java中,断言的BKM使用assert关键字而不是使用异常,日志记录和其他技术.

java assert

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

自定义C++断言宏

我偶然发现了一篇内容丰富的文章:http://cnicholson.net/2009/02/stupid-c-tr​​icks-adventures-in-assert/ ,它指出了我当前的调试宏套件中存在的大量问题.

如果您点击链接,则会在文章末尾附近给出宏的最终版本的完整代码.

提出的一般形式是这样的(如果我在转置它时错误,请有人纠正我):

#ifdef DEBUG
#define ASSERT(cond) \  
    do \  
    { \  
        if (!(cond)) \  
        { \  
            ReportFailure(#cond, __FILE__, __LINE__, 0); \
            HALT(); \
        } \  
    } while(0)  
#else  
#define ASSERT(cond) \  
    do { (void)sizeof(cond); } while(0) 
Run Code Online (Sandbox Code Playgroud)

在考虑使用我所学的内容修改代码时,我注意到该文章的评论中发布了一些有趣的变体:

一个是你不能将这个宏与三元运算符(即cond?ASSERT(x):func())一起使用,并且建议if()用三元运算符和一些括号以及逗号运算符替换它.后来另一位评论者提供了这样的:

#ifdef DEBUG
#define ASSERT(x) ((void)(!(x) && assert_handler(#x, __FILE__, __LINE__) && (HALT(), 1)))
#else
#define ASSERT(x) ((void)sizeof(x))
#endif
Run Code Online (Sandbox Code Playgroud)

&&在这种情况下,我认为使用逻辑并且特别聪明,在我看来,这个版本比使用if甚至三元的版本更灵活?:.更好的是返回值assert_handler可用于确定程序是否应该停止.虽然我不确定它为什么(HALT(), 1)而不仅仅是HALT().

我忽略了第二个版本是否存在任何特殊缺点?它消除了do{ } …

c++ macros assert

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

没有断言的单元测试

偶尔我会遇到一个没有断言的单元测试.我今天早上遇到的特定示例是测试在满足条件时写入日志文件.假设是如果没有抛出错误,则测试通过.

我个人对此没有任何问题,但是编写单元测试似乎有点"代码味道",没有任何关联它的断言.

只是想知道人们对此的看法是什么?

unit-testing assert

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

为什么在Integer类的Integer.valueOf方法中使用断言?

我正在深入研究Integer类实际上如何使用缓存对象,我在Integer.valueOf方法中找到了以下代码:

public static Integer valueOf(int i) {
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

java assert integer

26
推荐指数
3
解决办法
1107
查看次数