2012-06-21 35 views
7

Kịch bản này là:Ghi nhật ký bổ sung JBehave

Chúng tôi đang sử dụng JBehave và Selenium để kiểm tra hệ thống, tích hợp và kết thúc để kết thúc. Tôi đang kiểm tra kết quả tính toán trên trang có quá 20 giá trị để xác thực. Sử dụng Junit Xác nhận toàn bộ phép thử sẽ thất bại trong trường hợp đầu tiên của một trong các giá trị không chính xác. Những gì tôi muốn làm là nếu một xác nhận thất bại được đáp ứng thì thử nghiệm tiếp tục thực hiện để tôi có thể đối chiếu tất cả các giá trị không chính xác trong một lần chạy thử thay vì chạy thử nhiều lần.

Để thực hiện việc này, tôi nắm bắt các xác nhận và ghi ra tệp nhật ký bất kỳ điều gì không thực hiện được xác thực. Điều này đã để lại cho tôi một vài vấn đề:

1) Tệp nhật ký nơi tôi viết các lỗi xác nhận không chứa tên Câu chuyện hoặc kịch bản JBehave đang được chạy khi ngoại lệ xảy ra.

2) Câu chuyện hoặc kịch bản JBehave được liệt kê là có 'Đã qua' và tôi muốn nó được liệt kê là 'Không thành công'.

Có cách nào để tôi có thể đăng nhập tên Story và Scenario ra tệp nhật ký bổ sung HOẶC nhận ghi nhật ký bổ sung được ghi vào tệp nhật ký JBehave không?

Tôi làm cách nào để có được Câu chuyện/Kịch bản được đánh dấu là không thành công?

Trong cấu hình JBehave tôi có:

configuredEmbedder() 
    .embedderControls() 
    .doIgnoreFailureInStories(true) 
    .doIgnoreFailureInView(false) 
    .doVerboseFailures(true) 
    .useStoryTimeoutInSecs(appSet.getMaxRunningTime()); 

.useStoryReporterBuilder(
    new StoryReporterBuilder() 
    .withDefaultFormats() 
    .withViewResources(viewResources) 
    .withFormats(Format.HTML, Format.CONSOLE) 
    .withFailureTrace(true) 
    .withFailureTraceCompression(true) 
    .withRelativeDirectory("jbehave/" + appSet.getApplication()) 

Trả lời

11

Vâng, bạn có thể tạo StoryReporter riêng bạn:

public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter{ 
    private Log log = ... 

    @Override 
    public void successful(String step) { 
     log.info(">>successStep:" + step); 
    } 

    @Override 
    public void failed(String step, Throwable cause) { 
     log.error(">>error:" + step + ", reason:" + cause); 
    } 

    ... 
} 

và đăng ký nó như thế này:

.useStoryReporterBuilder(
    new StoryReporterBuilder() 
     .withReporters(new MyStoryReporter()) 
.. 
+0

Cảm ơn bạn. Điều đó thực sự hữu ích. –

+0

Bạn có thể vui lòng thêm thông tin thêm về cách chúng tôi tạo nhật ký. Vui lòng giải thích: Nhật ký nhật ký riêng = ... – farheen

+0

Điều đó phụ thuộc vào khung đăng nhập bạn đang sử dụng. Nếu bạn đang sử dụng slf4j: 'Logger log = LoggerFactory.getLogger (MyStoryReporter.class);'. Điểm chính là nó có thể là bất cứ thứ gì trong các phương thức gọi lại đó, bạn có thể thực hiện một sysout, ghi vào cơ sở dữ liệu hoặc bất cứ thứ gì khác – plasma147

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