2012-06-07 23 views
11

Tôi muốn có thể in trong nhật ký một thông điệp mà ý tưởng intellij sẽ trình bày một cách tốt đẹp để so sánh hai đối tượng (chuỗi). Điều này tự động xảy ra đối với các thông báo lỗi đăng nhập bằng một khẳng định junit thất bại:Định dạng đầu ra sao cho Intellij Idea hiển thị các khác biệt cho hai văn bản

 
assertEquals("some\nString", "another\nString"); 

=> 
org.junit.ComparisonFailure: <Click to see difference> 
    at org.junit.Assert.assertEquals(Assert.java:123) 
    at org.junit.Assert.assertEquals(Assert.java:145) 
    at com.something.DummyTest.testDummy(DummyTest.java:89) 

Các < Bấm để xem sự khác biệt > nhập thực sự hiển thị như một liên kết trong cửa sổ đầu ra của Idea Intellij. Khi bạn nhấp vào liên kết, cửa sổ so sánh mở ra hiển thị hai giá trị (giống như bạn so sánh hai tệp).

Đơn giản chỉ cần ném một ngoại lệ là không thể chấp nhận được vì tôi muốn ghi lại nhiều đối tượng để so sánh. Tôi đã cố gắng đăng nhập một văn bản, nhưng tôi đã không thể thuyết phục ý tưởng để so sánh hai văn bản.

Trả lời

19

IntelliJ IDEA đang sử dụng biểu thức chính quy được mã hóa cứng. Nếu văn bản khớp với mẫu, nó sẽ gợi ý nhấp để xem sự khác biệt.

Các mô hình là:

expected:<bla-blah> but was:<blah-blah-blah> 

Output phải phù hợp với định dạng của assertEquals hoặc assertThat.

Các mẫu chính xác có phần nằm rải rác xung quanh mã trong IDEA, nhưng một số là ví dụ: here.

+2

Tôi nghĩ rằng cả hai giá trị cần phải được sourrunded bởi dấu ngoặc kép là tốt. – yankee

+0

@yankee Trên thực tế, khi nhìn vào mô hình regex, điều đó dường như không cần thiết. – sschuberth

+0

Không có dấu ngoặc kép cần thiết, nhưng tôi phải thêm một dấu cách sau: để làm việc này. Vì vậy: 'dự kiến: nhưng là: ' –

Các vấn đề liên quan