2011-08-23 39 views
5

Bối cảnh: Viết Scala unit-tests trong một dự án do SBT quản lý.Lấy dấu vết ngăn xếp từ SBT với Scala

Khi tôi thực hiện sbt test chạy của tôi đơn vị kiểm tra một khẳng định thất bại ở đâu đó trong mã của tôi, tôi nhận được một cái gì đó như sau (và không có gì nhiều hơn):

Test com.reach.ml.test.TestLSHEasy.T0 failed: assertion failed 

này nói với tôi mà đơn vị kiểm tra gây ra khẳng định thất bại, nhưng không khẳng định điều đó. Nếu tôi chạy cùng một thử nghiệm trực tiếp (không sử dụng sbt), tôi nhận được một dấu vết toàn bộ ngăn xếp, rất hữu ích để gỡ lỗi. Vì vậy, câu hỏi của tôi: Làm cách nào để SBT in ra dấu vết ngăn xếp khi thử nghiệm bị treo?

+0

Không phải 'kiểm tra cuối cùng' hiển thị cho bạn tất cả kết quả thực hiện kiểm tra? – Geo

+0

Không, toàn bộ đầu ra liên quan đến thử nghiệm khi mọi thứ hoạt động là: "" " [thông tin] Đã qua:: Tổng cộng 9, Không thành công 0, Lỗi 0, Đã qua 9, Đã bỏ qua 0 [success] Tổng thời gian: 9 giây , hoàn thành ngày 22 tháng 8 năm 2011 11:33:29 PM "" " Nếu có lỗi, chỉ có dòng tôi đăng lần đầu và một dòng khác về cơ bản là giống nhau. – emchristiansen

+0

Ý nghĩa của Geo là gì, khi 'test' thất bại với ngoại lệ trên SBT, không gõ' kiểm tra cuối cùng' sau đó hiển thị toàn bộ ngoại lệ? –

Trả lời

2

Về xsbt, nó có thể liên quan đến đối tượng util.log.StackTrace có thể cắt đầu ra của nó.
Các issue 118 minh họa ý chí của việc giữ chồng dấu vết nên dưới sự kiểm soát tốt hơn:

vì vậy bạn không nên nhìn thấy dấu vết mà theo mặc định.

Có thể bạn có thể kiểm tra đơn vị, chặn bất kỳ ngoại lệ nào và in rõ ràng toàn bộ dấu vết ngăn xếp của mình? (như trong số Basic.scala hoặc Boot.scala).

+1

Cảm ơn. Có vẻ như các nhà phát triển đã bị hỏng một chút khi cố gắng dọn dẹp lỗi in. Trong mọi trường hợp, SBT là một công cụ tuyệt vời và gói với khối try/catch, trong khi không lý tưởng, không phải là khó. – emchristiansen

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