2015-04-07 20 views
10

Tôi đang cố gắng in một số dữ liệu với System.out trong các thử nghiệm đơn vị của mình (@Test mehotds), nhưng nó không hiển thị bất kỳ thứ gì. Tuy nhiên, nó hoạt động đúng theo phương pháp @Before. Tôi đang sử dụng JUnit với plugin Maven Surefire.System.out.print() không hiển thị bất cứ điều gì trong các phương pháp thử

public class MyTests { 

    @Before 
    void init(){ 

    System.out.println("Initializing some data..."); // <- It works. 

    } 

    @Test 
    void shouldRemoveSeries() { 

    System.out.println("TEST: Should remove series"); // <- It doesn't. 

    } 
} 

maven-surefire-plugin cấu hình:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.15</version> 
    <configuration> 
    <includes> 
     <include>**/*Tests.java</include> 
    </includes> 
    </configuration> 
</plugin> 

Cảm ơn.

+1

Chỉ cần làm rõ: Tại sao bạn sử dụng System.out.println() thay vì Logger? Sau này được thiết kế cho các mục đích như bạn đã viết – novy1234

+0

bạn đã thử một tên thử nghiệm bắt đầu với: kiểm tra? Có các phiên bản JUnit yêu cầu điều này. – Stultuske

+0

Chạy thử nghiệm Junit hoặc kiểm tra Maven – Selva

Trả lời

1

Sử dụng Log

private static Logger log = Logger.getLogger(LoggingObject.class); 
log.info("I'm starting"); 

hoặc System.setOut()

private final PrintStream stdout = System.out; 
private final ByteArrayOutputStream output = new ByteArrayOutputStream(); 
private TerminalView terminalview; 
+0

Tôi đã thử với Logger, nhưng nó vẫn không hiển thị bất cứ điều gì. Các thử nghiệm không được thông qua, ý tôi là, chúng chạy với các lỗi, có lẽ đây là lý do tại sao việc ghi nhật ký không hoạt động? –

+0

Bất cứ điều gì bạn chạy vào các bài kiểm tra, về mặt lý thuyết sẽ là ứng cử viên được đánh giá, vì vậy có thể thử nghiệm đang bắt nhật ký như một phần của bài kiểm tra, đó là lý do tại sao a) không có kết quả trong bảng điều khiển b) kiểm tra không vượt qua ... kiểm tra 'System.setOut () 'liên kết, tôi bạn sẽ có thể tạo ra một chức năng để in những gì bạn muốn mà không làm rối loạn kiểm tra ...;) –

+0

Nó không hoạt động cho tôi: (Và' Logger' không hoạt động trong phương pháp @Trước, Trong khi đó System.out.print() làm –

2

Vấn đề là tên của lớp thử nghiệm của bạn. Để được công nhận trong giai đoạn thử nghiệm trong xây dựng (bởi các plugin chắc chắn hơn Maven), nó phải được đặt tên là "* Test":

Inclusions and Exclusions of Tests

+0

Tôi đã chỉnh sửa các câu hỏi.Maven nhận ra các bài kiểm tra –

0

âm thanh này quen thuộc với tôi, vì vậy tôi giả sử bạn đang chạy của bạn kiểm tra từ một số IDE (Netbeans?). Nó có thể là trường hợp nó chỉ hiển thị đầu ra cho các thử nghiệm mà không thành công. Điều này cũng xảy ra khi chạy thử nghiệm từ bảng điều khiển?

Bạn có thể có nhiều may mắn hơn bằng cách sử dụng System.err thay vì System.out, nhưng tôi không chắc chắn về điều này.

6

Để có được kết quả của thử nghiệm bằng văn bản của bạn thông qua System.out.println bạn cần phải cấu hình maven-surefire-plugin để chuyển hướng đầu ra này vào một tập tin có thể đạt được bằng cách sử dụng như sau:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
    <redirectTestOutputToFile>true</redirectTestOutputToFile> 
    </configuration> 
</plugin> 

các tùy chọn redirectTestOutputToFile sẽ chuyển hướng đầu ra của System.out.println vv vào một tập tin được tạo ra riêng biệt:

Trích từ các tài liệu:

Thiết lập này để "true" t o chuyển hướng đầu ra tiêu chuẩn kiểm tra đơn vị tới một tệp (được tìm thấy trong các báo cáoDirectory/testName-output.txt).

Ngoài ra, System.out.println không có ý nghĩa trong thử nghiệm đơn vị nói chung.

21

Cũng có thể thực hiện điều này. Tôi đang sử dụng gradle để quản lý công việc của tôi và tôi đặt điều này trong vào cuối bởi build.gradle file:

test { 
    testLogging.showStandardStreams = true 
} 

Bây giờ tôi thấy System.out.println(whateves).

+2

cảm ơn điều này đã lưu tôi :) – Sky

+0

Tôi chạy vào cùng một vấn đề và điều này làm việc cho tôi là tốt. –

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