Java 什么时候应该在代码中使用assert,而不是编写junit测试。它们是一样的吗?

Java 什么时候应该在代码中使用assert,而不是编写junit测试。它们是一样的吗?,java,unit-testing,Java,Unit Testing,什么时候应该在代码中使用assert,而不是编写junit测试。它们是一样的吗? 我认为这个问题并不特定于java或任何特定语言,java内置断言要求使用特殊标志调用JVM。这大大降低了它们的实用性 您还应该了解在测试环境中测试产品与在生产环境中进行验证之间的区别 意思是:您总是努力使用单元测试(使用单元测试断言)来测试类的所有公共方法。您总是努力使您的应用程序健壮,这样它就不会在您的客户面前崩溃,但至少会给出明确的错误消息,并创建日志供您调试问题 但这些都是发展的不同方面 关于注释:JUnit

什么时候应该在代码中使用assert,而不是编写junit测试。它们是一样的吗?
我认为这个问题并不特定于java或任何特定语言,java内置断言要求使用特殊标志调用JVM。这大大降低了它们的实用性

您还应该了解在测试环境中测试产品与在生产环境中进行验证之间的区别

意思是:您总是努力使用单元测试(使用单元测试断言)来测试类的所有公共方法。您总是努力使您的应用程序健壮,这样它就不会在您的客户面前崩溃,但至少会给出明确的错误消息,并创建日志供您调试问题

但这些都是发展的不同方面

关于注释:JUnit只提供了许多不同版本的断言语句,原因只有一个:表达性。含义:它们帮助您编写易于理解的测试代码,例如:

assertThat(actualValue, is(expectedValue))

其中,
is()
是库提供的匹配器。如果您打算学习单元测试:只需记住,您只需要与hamcrest matchers一起“需要”
assertThat()

你好,阿扎德。Stackoverflow是处理特定编码问题/问题的地方。而且,这看起来很容易被谷歌搜索到。它们一起工作,而不是代码中的“代替”是“断言”是好的做法。养成为每个类编写JUnit测试的习惯也是一个很好的实践。不,它们不“一样”。它们是两种完全不同的东西,每一种都可以帮助您编写和维护更好的软件。我想问一下,这是否就是Junit拥有大量不依赖JVM的assertThat()API的原因?(我怀疑是…)如果Java断言是一种强制性的编程构造,Junit会随之消失?你觉得怎么样?谢谢你的回复,但我知道。我想知道java中的assert关键字,因为您说过它需要JVM启用,所以我想知道在Junit这样的单元测试库中使用assertThat()API而不是关键字之后,该关键字是否有意义。不在生产代码中;不在单元测试中。就这么简单。例如,见。