Tôi muốn sử dụng số assertArrayEquals(ArrayList<Token>, ArrayList<Token>)
với các đối số này (ví dụ: arrayList of tokens). Nhưng Java nói với tôi rằng tôi cần phải tạo ra một phương pháp như vậy. Có cách nào để kiểm tra sự bình đẳng của hai arrayLists thuộc loại nào trong Junit?ArrayList equality JUnit testing
Trả lời
Tôi muốn sử dụng
assertArrayEquals(ArrayList<Token>, ArrayList<Token>)
với các đối số này (ví dụ: danh sách mã thông báo). Nhưng Java nói với tôi rằng tôi cần phải tạo ra một phương pháp như vậy.
Nó cho bạn biết rằng bạn cần tạo phương thức vì không có phương thức nào trong thư viện JUnit. Không có phương thức như vậy trong thư viện JUnit vì assertArrayEquals
là để so sánh mảng và và ArrayList
là không một mảng — đó là List
.
Có cách nào để kiểm tra tính bình đẳng của hai arrayLists thuộc loại nào trong Junit không?
Bạn có thể kiểm tra sự bình đẳng giữa hai ArrayLists
(thực sự, bất kỳ hai đối tượng List
) sử dụng equals
, vì vậy bạn sẽ có thể sử dụng phương pháp assertEquals
JUnit và nó sẽ chỉ làm việc tốt.
Nếu bạn đang sử dụng một số khung kệ junit như unitils vv, chúng có các phương thức như assertReflectionEquals (similary framework khác), nơi bạn có thể sử dụng bất kỳ đối tượng nào. Nếu bạn không sử dụng bất kỳ khung công cụ junit nào của bên thứ ba, bạn có thể viết phương pháp chung tương tự của riêng mình
Guys Downvote thật tuyệt vời nhưng thực sự khó chịu khi ai đó downvote mà không đưa ra bất kỳ phản hồi nào của nó. Nó không tạo cơ hội cho poster để cải thiện vào lần sau –
thử
Assert.assertEquals(Object expected, Object actual);
nó hoạt động tốt với bộ sưu tập
void org.junit.Assert.assertArrayEquals(Object[] expecteds, Object[] actuals)
Những gì bạn có thể muốn sử dụng là. Bạn chỉ cần chuyển đổi Danh sách thành mảng bằng phương thức toArray()
, như sau:
ArrayList<Token> list1 = buildListOne(); // retrieve or build list
ArrayList<Token> list2 = buildListTwo(); // retrieve or build other list with same items
assertArrayEquals(list1.toArray(), list2.toArray());
Đừng quên nhập khẳng định này.
import static org.junit.Assert.assertArrayEquals;
Nhưng phương pháp này chỉ hoạt động nếu các mục trong cả hai danh sách có cùng thứ tự. Nếu lệnh không được đảm bảo, thì bạn cần phải sắp xếp các danh sách với phương thức Collections.sort()
, nhưng đối tượng của bạn cần triển khai giao diện java.util.Comparable
với một phương thức int compareTo(T o)
.
PS: Các giải pháp khác có thể là sử dụng assertEquals và quấn danh sách của bạn vào Set, như thế:
assertEquals(new HashSet<Token>(list1), new HashSet<Token>(list2));
Imagine myArraylist
được một danh sách mảng với nội dung "one", "two", "three"
này hoạt động tốt:
List<String> categories = asList("one", "two", "three");
assertTrue(myArraylist.equals(categories));
Đừng quên nhập: import static java.util.Arrays.asList;
- 1. junit testing - assertEquals for exception
- 2. silence -Wparentheses-equality error
- 3. Testing onActivityResult()
- 4. Unit-Testing OSGi-Components
- 5. Testing WeakReference
- 6. Grails withCriteria testing
- 7. Unit Testing Khung C
- 8. Unit Testing and PostSharp
- 9. ResourceManager và Unit Testing
- 10. testing admin.ModelAdmin in django
- 11. .net MVC functional testing
- 12. rspec testing carrierwave - newbie
- 13. ArrayList chứa một ArrayList
- 14. float/double equality với số không chính xác
- 15. Testing móc after_create với rspec
- 16. Testing Quartz CronTrigger kích hoạt
- 17. testing_fu testing in rails 3
- 18. Testing ViewModel PropertyChanged Sự kiện
- 19. Framework hoặc công cụ cho "testing unit unit"?
- 20. Trừ một arrayList khỏi một arrayList
- 21. Testing chỉ dự án trong Django
- 22. Bug trong hình học Hit-Testing
- 23. Testing Spring MVC chú thích mapppings
- 24. Vấn đề Unit Testing trong VB.NET
- 25. Testing for null trong Objective-C
- 26. ArrayList Unrolling
- 27. In ArrayList
- 28. ArrayList lọc
- 29. Junit kiểm tra phạm vi biến lớp
- 30. JUnit - assertSame
'assertEquals' bình thường sẽ hoạt động tốt cho' ArrayList '. –
@Bohemian: Tôi không tin điều đó. 'Danh sách.bằng 'kiểm tra phần tử bằng phần tử, và' assertEquals' sử dụng phương thức 'equals'. –
@LouisWasserman woops! bạn đúng :) – Bohemian