Assert.assertEquals junit参数顺序
JUnit中Assert.assertEquals junit参数顺序,junit,Junit,JUnit中Assert.assertEquals方法的参数顺序是(预期,实际) 虽然在另一篇文章中有人说这是毫无原因的,但在我在Uni的一个Java课程中,教授提到了排序的一个具体原因,但我不记得了 有人能帮我解决这个问题吗?没有具体原因。他们本可以用另一种方式排列参数。顺便说一句,TestNG做到了 为了更好的可读性和表达性,我更喜欢使用流畅的断言 在工具/故障结果中正确标记-工具遵循此顺序,一些GUI工具将标记哪个值是预期值,哪个值是实际值。至少,如果标签与值匹配,它将最大限度地减少混淆;
Assert.assertEquals
方法的参数顺序是(预期,实际)
虽然在另一篇文章中有人说这是毫无原因的,但在我在Uni的一个Java课程中,教授提到了排序的一个具体原因,但我不记得了
有人能帮我解决这个问题吗?没有具体原因。他们本可以用另一种方式排列参数。顺便说一句,TestNG做到了 为了更好的可读性和表达性,我更喜欢使用流畅的断言
等于所使用的方法:
115 static public void assertEquals(String message, Object expected,
116 Object actual) {
117 if (expected == null && actual == null)
118 return;
119 if (expected != null && isEquals(expected, actual))
120 return;
...
128
129 private static boolean isEquals(Object expected, Object actual) {
130 return expected.equals(actual);
131 }
它是当两个对象都非空时使用的预期值的等于方法。有人可能会争辩说,你知道期望值的类别(从而知道期望值类别的equals
方法的行为),但你可能不一定知道实际值的类别(理论上可以有一个更宽松的equals
方法)。因此,如果交换两个参数(即,两个不同类的equals
方法互不自反),则可能会得到不同的结果:
人为情况是ArrayList的预期值和可返回任何类型集合实例的实际值,可能是ArrayList,但也可能是自定义集合非列表类“Foo”的实例(即,Foo
未实现List
)。ArrayList的equals
方法(实际上是它的AbstractList.equals
)指定:
当且仅当指定的对象也是一个列表时返回true,并且
列表具有相同的大小,并且中所有对应的元素对都相同
这两个列表是相等的
也许“Foo”类的equals
方法更允许指定:
当且仅当指定的对象也是一个集合时返回true,并且
集合具有相同的大小,并且两个集合包含相同的对象
但顺序不一定相同
说:
ArrayList expectArrayList = ...;
Collection actualCollectionPossiblyFoo = ...
Assert.assertEquals(expectedArrayList, actualCollectionPossiblyFoo)
您是说您期望与ArrayList等价的东西(根据ArrayList/AbstractList对等于的定义)。如果
actualCollectionPossiblyFoo
实际上属于Foo
类,因此不是列表
ArrayListequals
方法所需
然而,这与说:
ArrayList expectedArrayList = ...;
Collection actualCollectionPossiblyFoo = ...;
Assert.assertEquals(actualCollectionPossiblyFoo, expectedArrayList);
因为actualCollectionPossbilyFoo
可能是Foo
的一个实例,并且
FoO可以考虑自己和<代码> ExpDeDayRistList根据
Foo
班级的equals
方法。谢谢你的回答,伙计,尽管教授提到的原因有一些“重要的”推理,而不是一致性。我不太确定,但我认为这与测试不通过或方法因某种原因中断时发生的情况有关。