Tôi đang chạy một số kiểm tra JUnit trên các ứng dụng của mình. Mỗi thử nghiệm có vòng lặp for gọi phương thức tương ứng 10000 lần. Các phương pháp thử nghiệm tạo ra rất nhiều nhật ký. Các nhật ký này cũng được JUnit thu thập tự động làm kết quả kiểm tra. Tình huống này sẽ xảy ra với OutOfMemoryError vì bộ đệm chuỗi trong đó JUnit giữ đầu ra trở nên quá lớn. Tôi không cần những bản ghi này trong khi thử nghiệm, vì vậy nếu có cách nào để nói với JUnit "đừng giữ đầu ra chương trình" thì nó sẽ là đủ. Bất kỳ ý tưởng nào?Đầu ra Junit và OutOfMemoryError
Trả lời
Bạn đang sử dụng loại ghi nhật ký nào? Có cách nào bạn có thể ghi đè lên hành vi đăng nhập mặc định để bỏ qua tất cả các thông điệp tường trình không?
Một số tùy chọn:
- Thay đổi đăng nhập của bạn để nó bãi vào một tập tin thay vì đầu ra tiêu chuẩn.
- Tăng kích thước heap tối đa với
-Xmx <some number>M
, như-Xmx 256M
.
Tôi chỉ tăng bộ nhớ khả dụng .. Hãy thử thêm -Xmx256m -Xmx256m vào máy ảo của bạn.
Giải pháp là ghi đè thuộc tính ghi nhật ký. Bây giờ tôi vô hiệu hóa đăng nhập và tất cả dường như làm việc (kiểm tra vẫn đang chạy). Nếu nó hoạt động, tôi sẽ cấu hình một cách để đăng nhập vào một tập tin. Xin cảm ơn tất cả mọi người (và chúc mừng Jeff & bạn bè cho trang này).
Tôi thấy rằng một câu trả lời đã được chấp nhận, nhưng đây là những gì tôi đã nộp nếu tôi đã nhận được nó gõ lên và thử nghiệm nhanh hơn:
Nếu bằng cách "khai thác gỗ" bạn có nghĩa là System.out.println() hoặc System.err.println() và nếu bạn chắc chắn rằng thử nghiệm của mình thực sự không cần nhật ký, thì bạn có thể chuyển hướng stdout và stderr theo chương trình.
// Save the original stdout and stderr
PrintStream psOut = System.out;
PrintStream psErr = System.err;
PrintStream psDevNull = null;
try
{
// Send stdout and stderr to /dev/null
psDevNull = new PrintStream(new ByteArrayOutputStream());
System.setOut(psDevNull);
System.setErr(psDevNull);
// run tests in loop
for (...)
{
}
}
finally
{
// Restore stdout and stderr
System.setOut(psOut);
System.setErr(psErr);
if (psDevNull != null)
{
psDevNull.close();
psDevNull = null;
}
}
Bằng cách này, sản lượng thử nghiệm của bạn sẽ bị vô hiệu, nhưng sản lượng khác từ JUnit sẽ không được, vì nó sẽ được nếu bạn sử dụng chuyển hướng trên dòng lệnh như thế này:
ant test &> /dev/null
Các chuyển hướng dòng lệnh làm cho tất cả đầu ra của Ant/JUnit được chuyển hướng, không chỉ là những gì đến từ lớp bạn đang thử nghiệm, vì vậy đó có thể không phải là những gì bạn muốn. Việc chuyển hướng có lập trình chỉ làm cho các bản in/ghi vào System.out và System.err trong chương trình của bạn được chuyển hướng, và bạn vẫn sẽ nhận được kết quả từ Ant và JUnit.
Nếu có bất kỳ trợ giúp nào, hãy đặt outputtoformatters = "no" giải quyết tất cả các vấn đề bộ nhớ của tôi (trong Ant 1.7.1 điều này ngăn cản đầu ra được tạo ra bởi các kiểm tra được gửi đến các trình kiểm tra).
- 1. Đầu ra JUnit trong báo cáo Maven
- 2. Java: Exception OutOfMemoryError và freeMemory()
- 3. Junit maven Đã xảy ra lỗi trong việc bắt đầu ngã ba, rà soát đầu ra trong nhật ký
- 4. JMeter OutOfMemoryError
- 5. fork() và đầu ra
- 6. Maven Cobertura OutOfMemoryError
- 7. Jenkins và JUnit
- 8. Hibernate, SessionFactoryObjectFactory và OutOfMemoryError: không gian java heap
- 9. Đầu ra Graphviz và ascii
- 10. sp_executesql và đầu ra bảng
- 11. Java, Junit - Nắm bắt đầu vào/đầu ra tiêu chuẩn để sử dụng trong một bài kiểm tra đơn vị
- 12. hàng loạt JDBC Chèn OutOfMemoryError
- 13. Android dịch vụ không đưa ra bởi kiểm tra JUnit
- 14. khai báo junit và hamcrest
- 15. "+" và "-" đầu ra của lệnh Jobs
- 16. Phiên Mongostat và Mongotop đầu ra
- 17. JasperBáo cáo đầu ra html và pdf
- 18. Tránh XSS với đầu vào BBCode và đầu ra HTML
- 19. Hàng loạt đầu vào và đầu ra trong Mathematica?
- 20. Làm thế nào tôi có thể biến đầu ra của các kiểm tra UIAutomation iOS của tôi thành đầu ra kiểu JUnit cho Jenkins?
- 21. Tại sao bộ sưu tập song song Scala đôi khi gây ra lỗi OutOfMemoryError?
- 22. Mockito ném ra một OutOfMemoryError trên một thử nghiệm đơn giản
- 23. đầu ra lệnh chuyển hướng thành đầu ra biến đổi và tiêu chuẩn trong ksh
- 24. cách lấy chuỗi đầu ra lệnh linux và trạng thái đầu ra trong C++
- 25. Maven xây dựng OutOfMemoryError Chunck :: new
- 26. Netbeans và tạo các kiểm tra JUnit
- 27. java outOfMemoryError với trình tạo chuỗi
- 28. Netbeans OutOfMemoryError: Vùng heap Java, định dạng mã
- 29. Cửa sổ đầu ra của IntelliJ IDEA cắt đầu ra
- 30. Junit nhiều thiết lập và thử nghiệm duy nhất