标签: assertion

Python断言的最佳实践

  1. assert作为标准代码的一部分使用而不是仅仅用于调试目的,是否存在性能或代码维护问题?

    assert x >= 0, 'x is less than zero'
    
    Run Code Online (Sandbox Code Playgroud)

    好或坏比

    if x < 0:
        raise Exception, 'x is less than zero'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另外,有没有办法设置业务规则if x < 0 raise error,总是在没有try/except/finally这样的情况下进行检查,如果在整个代码中的任何时候x小于0都会引发错误,就像你assert x < 0在函数的开头设置一样,在函数内的任何地方哪里x变得少于0则引发异常?

python assert raise assertion

452
推荐指数
11
解决办法
22万
查看次数

如何使用JUnit Test注释断言我的异常消息?

我已经用@Test注释编写了一些JUnit测试.如果我的测试方法抛出一个已检查的异常,并且我想要将该消息与异常一起断言,那么有没有办法使用JUnit @Test注释?AFAIK,JUnit 4.7不提供此功能,但未来的版本是否提供此功能?我知道在.NET中你可以断言消息和异常类.寻找Java世界中的类似功能.

这就是我要的:

@Test (expected = RuntimeException.class, message = "Employee ID is null")
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() {}
Run Code Online (Sandbox Code Playgroud)

java testing annotations junit4 assertion

286
推荐指数
8
解决办法
18万
查看次数

"断言"关键字有什么作用?

怎么assert办?例如在函数中:

private static int charAt(String s, int d) {
    assert d >= 0 && d <= s.length();
    if (d == s.length()) return -1;
    return s.charAt(d);
}
Run Code Online (Sandbox Code Playgroud)

java assert assertion

134
推荐指数
4
解决办法
15万
查看次数

何时使用断言以及何时使用异常

大多数时候我会使用异常来检查代码中的条件,我想知道什么时候使用断言是合适的时间?

例如,

Group group=null;
try{
    group = service().getGroup("abc");
}catch(Exception e){
    //I dont log error because I know whenever error occur mean group not found
}

if(group !=null)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

你能指出断言如何适应这里吗?我应该使用断言吗?

看起来我从不在生产代码中使用断言,只在单元测试中看到断言.我知道在大多数情况下,我可以使用异常来执行上面的检查,但我想知道"专业"的适当方式.

java exception assertion

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

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

在MiniTest的assert_raises/must_raise中检查异常消息的预期语法是什么?

什么是在MINITEST的检查异常消息预期的语法assert_raises/ must_raise

我正在尝试做出如下所示的断言,其中"Foo"是预期的错误消息:

proc { bar.do_it }.must_raise RuntimeError.new("Foo")
Run Code Online (Sandbox Code Playgroud)

ruby tdd minitest assertion

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

为什么我的C malloc断言失败了?

我正在实现一个除法和征服多项式算法,所以我可以将它与OpenCL实现进行基准测试,但我无法开始malloc工作.当我运行程序时,它会分配一堆东西,检查一些东西,然后发送size/2给算法.然后,当我malloc再次点击它时,它会吐出这个:

malloc.c:3096:sYSMALLOc:断言`(old_top ==(((mbinptr)(((char*)&((av) - > bins [((1) - 1)*2])) - __builtin_offsetof(struct malloc_chunk,fd))))&& old_size == 0)|| ((unsigned long)(old_size)> =(unsigned long)(((__ builtin_offsetof(struct malloc_chunk,fd_nextsize))+((2*(sizeof(size_t))) - 1))~~((2*(sizeof) (size_t))) - 1)))&&((old_top) - > size&0x1)&&((unsigned long)old_end&pagemask)== 0)'失败.中止

有问题的一行是:

int *mult(int size, int *a, int *b) {
    int *out,i, j, *tmp1, *tmp2, *tmp3, *tmpa1, *tmpa2, *tmpb1, *tmpb2,d, *res1, *res2;
    fprintf(stdout, "size: %d\n", size);

    out = (int *)malloc(sizeof(int) * size * 2);
}
Run Code Online (Sandbox Code Playgroud)

我用a检查了大小fprintf,它是一个正整数(此时通常为50).我尝试malloc用普通号码打电话,但我仍然得到错误.我只是对正在发生的事情感到难过,到目前为止我发现的谷歌没有任何帮助.

有什么想法发生了什么?我正在试图弄清楚如何编译一个更新的GCC,如果它是编译器错误,但我真的怀疑它.

c malloc gcc assertion

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

Java断言未得到充分利用

我想知道为什么assert关键字在Java中如此少用?我几乎从未见过它们,但我认为它们是个好主意.我当然更喜欢简洁:

assert param != null : "Param cannot be null";
Run Code Online (Sandbox Code Playgroud)

对于冗长的:

if (param == null) {
    throw new IllegalArgumentException("Param cannot be null");
}
Run Code Online (Sandbox Code Playgroud)

我怀疑是因为他们未得到充分利用

  • 他们来得相对较晚(Java 1.4),到那时许多人已经建立了他们的Java编程风格/习惯
  • 它们默认在运行时关闭

java assertion

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

AssertEquals 2列表忽略顺序

我认为这应该是一个非常简单的问题.但不知何故,我无法在谷歌找到答案.

假设我有2个字符串列表.首先包含"字符串A"和"字符串B",第二个包含"字符串B"和"字符串A"(按顺序通知差异).我想用JUnit测试它们以检查它们是否包含完全相同的字符串.

是否有任何断言检查忽略顺序的字符串的相等性?对于给定的示例org.junit.Assert.assertEquals抛出AssertionError

java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]>
Run Code Online (Sandbox Code Playgroud)

解决方法是首先对列表进行排序,然后将它们传递给断言.但我希望我的代码尽可能简单和干净.

我使用Hamcrest 1.3,JUnit 4.11,Mockito 1.9.5.

java arrays junit unit-testing assertion

65
推荐指数
5
解决办法
6万
查看次数

断言使用Selenium WebDriver和java不存在WebElement

在我编写的测试中,如果我想断言WebElement存在于页面上,我可以做一个简单的事情:

driver.findElement(By.linkText("Test Search"));
Run Code Online (Sandbox Code Playgroud)

如果它存在,它将通过,如果它不存在它将弹出.但现在我想断言的链接本身并不存在.我不清楚如何做到这一点,因为上面的代码不返回布尔值.

编辑这就是我提出自己修复的方法,我想知道是否还有更好的方法.

public static void assertLinkNotPresent (WebDriver driver, String text) throws Exception {
List<WebElement> bob = driver.findElements(By.linkText(text));
  if (bob.isEmpty() == false) {
    throw new Exception (text + " (Link is present)");
  }
}
Run Code Online (Sandbox Code Playgroud)

java assertion selenium-webdriver

40
推荐指数
4
解决办法
10万
查看次数