ChatGPT解决这个技术问题 Extra ChatGPT

警告:不推荐使用 Assert 类型的方法 assertEquals

由于方法 Assert.assertEquals 已弃用,我们现在应该使用哪种方法?

以下代码:

String arg1 = "test";
String arg2 = "me";

Assert.assertEquals(arg1, arg2);

给出以下警告:

此行有多个标记 不推荐使用 Assert 类型的方法 assertEquals(String, String) 不推荐使用 Assert 类型


S
Stefan Birkner

您使用的是 junit.framework.Assert 而不是 org.junit.Assert


谢谢....我后来意识到,在我发布这个之后......我仍然认为值得在这里作为问题/答案包括在内,因为它可能会为其他人弹出,现在他们会在谷歌搜索时找到它。
This answer 到上面链接的问题提供了一些额外的上下文。
对于也发现这很有用的未来人,请不要评论谢谢 - 只需对问题和答案进行投票即可。 meta.stackexchange.com/questions/126180/… 这没什么大不了的,但我们不希望这个答案变得混乱。
我很确定这在 org.junit.Assert 中也被弃用了。我认为正如下面 Tommy.qichang 所评论的那样,它需要一个额外的 delta 参数(被认为是正确的精度级别)。
这个问题是关于比较字符串而不是浮点数。对于字符串,它不被弃用。
X
Xanlantos

此方法还会遇到不推荐使用的警告:

org.junit.Assert.assertEquals(float expected,float actual) //deprecated

这是因为目前 junit 更喜欢第三个参数,而不仅仅是两个浮点变量输入。

第三个参数是delta:

public static void assertEquals(double expected,double actual,double delta) //replacement

这主要用于处理不准确的浮点计算

有关详细信息,请参阅此问题:Meaning of epsilon argument of assertEquals for double values


Delta 是 2 个数字可以偏离的值。因此,只要 Math.abs(expected - actual) < delta,它就会断言为真。如果您想要 100% 的准确度,请使用 0。
L
Languoguang

当我使用 Junit4 时,导入 junit.framework.Assert;导入 junit.framework.TestCase;警告信息是:不推荐使用断言的类型

像这样导入时: import org.junit.Assert;导入 org.junit.Test;警告消失了

differences between 2 JUnit Assert classes 的可能重复项