2009-04-21 33 views
23

Tôi đang cố gắng xem liệu có cách nào để bao gồm "văn bản mô tả" trong báo cáo junit của tôi theo cách của javadocs hay không. JUnit 4 dường như không hỗ trợ thuộc tính 'mô tả' cho chú thích @Test như TestNG.Báo cáo JUnit - Mô tả phương pháp thử

Cho đến nay những gì tôi đã nghiên cứu chỉ có một công cụ được gọi là javadoc-junit (http://javadoc-junit.sourceforge.net/). Tuy nhiên tôi không thể làm việc này vì nó có vẻ không tương thích với Junit 4.

Điều tôi muốn là một số cách để cung cấp một hoặc hai câu văn bản với mỗi phương pháp thử trong báo cáo JUnit. JavaDoc không tốt vì đối tượng mục tiêu sẽ phải chuyển đổi giữa JavaDoc và Báo cáo Junit để xem tài liệu và/hoặc thống kê kiểm tra.

Có ai biết bất kỳ điều gì khác mà tôi có thể sử dụng với nỗ lực tối thiểu không?

nhất, Ray J

+1

Tốt câu hỏi. Tôi cũng sẽ quan tâm đến một giải pháp cho điều đó. – martin

+0

5 năm sau, cùng một vấn đề. :) – mario

+0

Junit 5 sẽ hỗ trợ tên kiểm tra tùy chỉnh: http://junit.org/junit5/docs/current/user-guide/#custom-names – gontard

Trả lời

6

Tôi không đặt javadocs trong các thử nghiệm JUnit. Tôi thường làm cho tên của phương pháp mô tả đủ để nó tốt hay tốt hơn bất kỳ bình luận nào tôi có thể nghĩ ra.

-1

Tôi có thể tưởng tượng rằng, Framework for Integrated Tests (FIT) sẽ là giải pháp tốt và sạch sẽ.

FIT làm gì?
FIT là một khuôn khổ cho phép viết các bài kiểm tra thông qua một bảng trong một tài liệu Word, một bảng wiki hoặc một bảng html.
Mọi nhân vật bên ngoài bảng đều bị FIT bỏ qua và cho phép bạn nhập tài liệu, mô tả, yêu cầu và v.v.

Bảng trên trông như thế nào?

Hãy tưởng tượng một hàm MyMath.square(int) mà bình phương là thông số đầu vào của nó. Bạn cần phải xây dựng một cái gọi là Lịch thi đấu, trở thành một bộ chuyển đổi giữa MyMath và bảng dưới đây của bạn:

class.with.Fixture.Square 
x square() 
2 4 
5 25 

Cột đầu tiên mô tả các giá trị đầu vào, thứ hai là kết quả mong đợi. Nếu nó không bằng nhau, trường này được đánh dấu là màu đỏ.

Chế độ xem như thế nào?
Đối với ví dụ được đưa ra, đây sẽ là trận đấu chính xác:

package class.with.Fixture // Must be the same as in the fist row of the table 

public class Square extends Fixture { 
    public int x; // Must be the same as in the second row 
    public int square() { // Must be the same as in the second row 
     return MyMath.square(x); 
    } 
} 

Có lẽ, bạn có thể sử dụng FIT cho yêu cầu của bạn.
Hãy bình luận câu trả lời của tôi hoặc chỉnh sửa câu hỏi của bạn để biết thêm thông tin!

+0

Không hiểu cách này trả lời câu hỏi của bạn về việc thêm thông điệp mô tả cho testMethod của bạn. FIT có cung cấp tính năng này không? – hakish

+0

Không trực tiếp, nhưng bạn có thể làm tài liệu tốt trong tài liệu Word của bạn, phương pháp thử nghiệm sẽ làm gì và nên làm gì. – guerda

8

Có giải pháp khá gần đây được gọi là Allure. Đó là một báo cáo thực hiện thử nghiệm dựa trên Java chủ yếu dựa trên việc thêm các chú thích bổ sung vào mã.chú thích hiện có bao gồm:

  • mô tả tùy chỉnh: @Description ("Một thử nghiệm mát mẻ")
  • nhóm bởi các tính năng hoặc những câu chuyện: @Features ({ "feature1", "feature2"}), @Stories ({ "story1", "story2"})
  • đánh dấu phương pháp thực hiện trong trường hợp thử nghiệm như các bước: @Step (chỉ hoạt động ngay cả đối với các phương pháp tư nhân)
  • file đính kèm: @At tachment (name = "Page ảnh chụp màn hình", type = "image/png")

Xem họ wikiexample project để biết thêm chi tiết.

8

Trong JUnit 5 có cách để chú thích mọi thử nghiệm với @DisplayName. Các lớp kiểm tra được khai báo có thể có text, special charactersemojis.

Văn bản được khai báo trên mỗi thử nghiệm hiển thị theo số test runnerstest reports.


Các Javadoc nói:

public @interface DisplayName

@DisplayName được sử dụng để khai báo một tên hiển thị tùy chỉnh cho các lớp thử nghiệm chú thích hoặc phương pháp thử nghiệm. Tên hiển thị thường được sử dụng cho báo cáo thử nghiệm trong IDE và công cụ xây dựng và có thể chứa dấu cách, ký tự đặc biệt và thậm chí cả biểu tượng cảm xúc.

User Guide:

import org.junit.gen5.api.DisplayName; 
import org.junit.gen5.api.Test; 

@DisplayName("A special test case") 
class DisplayNameDemo { 

    @Test 
    @DisplayName("Custom test name containing spaces") 
    void testWithDisplayNameContainingSpaces() { 
    } 

    @Test 
    @DisplayName("╯°□°)╯") 
    void testWithDisplayNameContainingSpecialCharacters() { 
    } 

    @Test 
    @DisplayName("") 
    void testWithDisplayNameContainingEmoji() { 
    } 
} 
+0

Thanx nhưng JUnit 5 quá mới để sử dụng trong quá trình sản xuất. – Akceptor

+1

@Akceptor Thats true. Nhưng tôi đã suy nghĩ, câu hỏi là 7 tuổi - có thể trong 7 năm này có thể là câu trả lời đúng: D – Patrick

+1

Được trao tặng. Chỉ vì có vẻ như JUnit 5 là giải pháp duy nhất có sẵn – Akceptor

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