Unit testing 是否需要使用JDK断言?

Unit testing 是否需要使用JDK断言?,unit-testing,Unit Testing,我读过一本书,书中说“使用assert测试内部代码是有意义的。例如: private String welcome(String name) { assert name!=null && !name.isEmpty() : "name must be specified"; return "Hello, " + name; } " 然后这本书介绍了联合测试。我想知道即使有联合测试也有必要使用断言吗? 谢谢。单元测试根据某些状态和您提供的参数验证部分代码的行为 在运行时,

我读过一本书,书中说“使用assert测试内部代码是有意义的。例如:

private String welcome(String name) {
  assert name!=null && !name.isEmpty() : "name must be specified";
  return "Hello, " + name;
}
" 然后这本书介绍了联合测试。我想知道即使有联合测试也有必要使用断言吗?
谢谢。

单元测试根据某些状态和您提供的参数验证部分代码的行为

在运行时,任何可能的值(正确的类型)都可以传递给您的方法,这就是为什么每次都执行
assert
。如果您希望程序在收到不受支持的参数时终止执行,则
assert
对此非常有用


您可能还想看看抛出一个
IllegalArgumentException
,因为它专门描述了出错的原因。

单元测试根据一些状态和您提供的参数验证部分代码的行为

在运行时,任何可能的值(正确的类型)都可以传递给您的方法,这就是为什么每次都执行
assert
。如果您希望程序在收到不受支持的参数时终止执行,则
assert
对此非常有用


您可能还想看看抛出一个
IllegalArgumentException
,因为它专门描述了出错的原因。

我被这个逻辑弄糊涂了。我的意思是,如果我知道(或通过单元测试发现)一些不受支持的参数将传入,为什么我不做一些预防工作,比如抛出IllegalArgumentException?你当然可以抛出一个
IllegalArgumentException
,但这并不能简单地阻止某人传入一个不受支持的参数。这会引发一个异常,使调用代码有机会处理此场景。单元测试用于检查当传入不受支持的参数时,该方法是否正确地引发了您期望的异常,而不仅仅是失败。我使用异常为调用代码提供了处理该场景的更改。我使用单元测试来防止异常崩溃。那么JDK断言用于什么呢?我个人总是在
assert
上使用异常,这个问题解释了原因:@Alex谢谢。我阅读了你所有的参考资料,理解了一些关于断言的概念。但唯一的问题是,没有太多实际的例子来演示如何使用,如果有,请给我一些链接。我对这种逻辑感到困惑。我的意思是,如果我知道(或通过单元测试发现)一些不受支持的参数将传入,为什么我不做一些预防工作,比如抛出IllegalArgumentException?你当然可以抛出一个
IllegalArgumentException
,但这并不能简单地阻止某人传入一个不受支持的参数。这会引发一个异常,使调用代码有机会处理此场景。单元测试用于检查当传入不受支持的参数时,该方法是否正确地引发了您期望的异常,而不仅仅是失败。我使用异常为调用代码提供了处理该场景的更改。我使用单元测试来防止异常崩溃。那么JDK断言用于什么呢?我个人总是在
assert
上使用异常,这个问题解释了原因:@Alex谢谢。我阅读了你所有的参考资料,理解了一些关于断言的概念。但唯一的问题是,没有太多实际的例子来演示如何使用,如果有,请给我一些链接