我發現很多關於比較List對象的問題和答案,無論它們的元素順序如何,但是我的問題更復雜:我有兩個包含除其他屬性外,還包括一份清單。我想執行兩個bean的assertEquals,而不管內部列表中元素的順序如何。有沒有簡單的方法來做到這一點?JUnit:比較兩個包含列表而不管列表順序的bean
0
A
回答
0
我想你可以找到答案here。這個想法是使用hamcrest斷言。
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
import static org.junit.Assert.assertThat;
public class CompareListTest {
@Test
public void compareList() {
List<String> expected = Arrays.asList("String A", "String B");
List<String> actual = Arrays.asList("String B", "String A");
assertThat("List equality without order",
actual, containsInAnyOrder(expected.toArray()));
}
}
0
當你這樣做的assertEquals(expectedObject,actualObject)現場JUnit的實際調用對象的平等method.So背後如果重寫你的對手的方法,那麼你可以達到你期待什麼我的建議會。
assertEqual後面的邏輯。
String expectedString = String.valueOf(expected);
String actualString = String.valueOf(actual);
if (expectedString.equals(actualString)) {
return formatted + "expected: "
+ formatClassAndValue(expected, expectedString)
+ " but was: " + formatClassAndValue(actual, actualString);
} else {
return formatted + "expected:<" + expectedString + "> but was:<"
+ actualString + ">";
}
或Apache UTIL可檢查兩個對象不等於方法overiding
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
API
EqualsBuilder.reflectionEquals(obj1, obj2)
+0
是的,我知道。而不改變equals()?任何「聰明」圖書館? – Pino
+0
@Pino你可以看看[assertj](http://joel-costigliola.github.io/assertj/)它有很多很酷的API方法用於這個目的。 –
相關問題
- 1. 比較兩個列表項,其中列表包含字典項
- 2. 根據順序比較兩個陣列
- 3. F#創建函數來比較兩個包含列表的列表
- 4. 比較兩個包含大量對象的列表
- 5. 比較兩個包含類對象的通用列表
- 6. 比較兩個列表linq
- 7. 比較兩個列表
- 8. 比較兩個列表
- 9. 比較兩個列表
- 10. 比較兩個組列表
- 11. 比較兩個列表 - Scala
- 12. 比較兩個列表C#
- 13. 比較兩個列表 - Python
- 14. 比較兩個列表
- 15. 比較兩個列表?
- 16. 比較兩個列表C#
- 17. 比較兩個列表
- 18. 比較兩個列表
- 19. 比較兩個列表
- 20. 以任意順序比較基於多列的兩個表?
- 21. 比較包含NaN的列表
- 22. 比較兩個不同的列表
- 23. 比較兩個不同表中的列
- 24. 比較兩個字符串列表元素順序
- 25. JUnit的比較實體的兩個列表
- 26. 如何比較列表中無序列表的兩個無序列表?
- 27. Mysql的比較兩列在兩個表
- 28. 比較兩個列表,並找到列表中的名單,而不是列表中的兩個使用powershell
- 29. 比較JUnit中的兩個對象列表
- 30. 比較列表,給定列內容的順序不重要
不,我不想比較兩個名單:我想比較兩個包含List和其他屬性的bean。 – Pino
@Pino抱歉誤會。如果您添加一些代碼以更好地瞭解您的情況,那將會很不錯 –