2010-02-07 49 views
36

Tôi mới đến grails, đến từ Django.grails test-app để xuất ra bàn điều khiển

Sử dụng thử nghiệm phát triển theo định hướng, tôi đã quen với việc viết các bài kiểm tra và sau đó là chức năng thực tế. Điều gì làm việc tốt cho tôi nó để viết thử nghiệm, chạy hàm với một số đầu ra gỡ lỗi để xem trạng thái của biến đó cho đến khi kiểm tra đơn vị chuyển, và sau đó di chuyển đầu ra gỡ lỗi.

Trong grails 'grails test-app', đầu ra của 'log.debug' và 'println' không được ghi vào bàn điều khiển và cũng không có trong báo cáo.

Điểm tài liệu để sử dụng mocklogging, sẽ xuất các lệnh gọi log.debug sang bàn điều khiển, nhưng sử dụng grails 1.2.1, tôi không thể thấy bất kỳ đầu ra nào.

Có thể bất kỳ ai vui lòng cho tôi biết cách xem đầu ra của 'println' hoặc 'log.debug' trong bảng điều khiển để tăng tốc độ phát triển của tôi không?

Trả lời

77

Thêm công tắc -echoOut để grails thử nghiệm ứng dụng, đây là new in the 1.2 release:

grails test-app -echoOut 

Có một số thiết bị chuyển mạch hữu ích khác trong bài kiểm tra ứng dụng là tốt, bao gồm:

Hệ thống echo. sai lầm thông điệp:

grails test-app -echoErr 

lực lượng sạch trước khi chạy thử nghiệm (mà không làm grails sạch & & grails thử nghiệm ứng dụng):

grails test-app -clean 

chỉ chạy thử nghiệm đơn vị:

grails test-app unit: 

chỉ chạy thử nghiệm hội nhập:

grails test-app integration: 

chạy trong một môi trường cụ thể:

grails -Dgrails.env=production test-app 

chạy thử nghiệm chỉ dành cho một riêng lớp kiểm tra (như com.foo.MyControlle rTests), hãy chắc chắn rời khỏi "thử nghiệm" hậu tố:

grails test-app com.foo.MyController 

chạy lại chỉ kiểm tra rằng thất bại lần cuối cùng bạn chạy các bài kiểm tra của bạn

grails test-app -rerun 
+1

Bạn có biết cách xuất ra lỗi actuall như được báo cáo bởi junit không? I E. "mong đợi foo, nhưng có thanh". Ngay cả với -testOut và -testErr, nó không được hiển thị và tôi phải tìm trong các tệp tin mục tiêu/test-reports/plain/*. – c089

+0

Cùng một vấn đề ở đây. Tôi phải làm một cái gì đó như thế này: $ grails test-app -echoOut -echoErr Something.testMain; cat ./target/test-reports/plain/TEST-integration-integration-SomethingTests.txt Có ai biết một cách để thực sự làm cho nó xuất tất cả mọi thứ? Thxx! – jpswain

+0

Cảm ơn bạn đã đăng những nội dung này. Tôi chỉ muốn tôi có thể tìm ra một cách để có đầu ra giao diện điều khiển in tên thử nghiệm nó đang chạy thay vì "1 của xx". Những -echoOut in ra một số thông tin hữu ích, nhưng không phải là tên thử nghiệm. – franzcatch

5

Để xem báo cáo log.debug bạn cần phải thêm dòng sau vào phần log4 của grails-app/conf/Config.groovy file:

log4j = { 
    ... 
    ... 
    ... 
    debug 'grails.app' 
} 
3

Một điều mà có thể cũng giúp bạn thực hiện việc này:

Đảm bảo cấu hình của bạn.groovy lập log4j:

 

import grails.util.GrailsUtil 

if (GrailsUtil.environment == 'test') { 
    log4j = { 

     appenders { 
      // %d{yyyyMMdd.HHmmss.SSS} %r [%t] %-5p %c %x - %m%n 
      console name:'a1', layout:pattern(conversionPattern: '%d{yyyyMMdd.HHmmss.SSS} %r [%t] %-5p %c %x - %m%n') 
     } 

     root { 
      info 'a1' 
      additivity = true 
     } 

     // debug 'org.springframework.security' 

     error 'org.codehaus.groovy.grails.web.servlet', // controllers 
       'org.codehaus.groovy.grails.web.pages', // GSP 
       'org.codehaus.groovy.grails.web.sitemesh', // layouts 
       'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
       'org.codehaus.groovy.grails.web.mapping', // URL mapping 
       'org.codehaus.groovy.grails.commons', // core/classloading 
       'org.codehaus.groovy.grails.plugins', // plugins 
       'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
       'org.springframework', 
       'org.hibernate', 
       'org.apache', 
       'grails.util.GrailsUtil', 
       'grails.app.service.NavigationService', 
       'org.quartz', 
       'net.sf.ehcache' 

     fatal 'NotificationJob' 


     warn 'org.mortbay.log', 
       'groovyx.net.ws',     // Web services too noisy with INFO statements 
       'org.apache.cxf.endpoint.dynamic' // Web services too noisy with INFO statements 

     info 'org.springframework.security' 

     debug 'grails.app.controller.TroublesomeController' 
    } 
} 

 

Trong thử nghiệm của bạn, làm điều này:

 

import org.slf4j.Logger 
import org.slf4j.LoggerFactory 

class HandoffTests extends GroovyTestCase { 
    Logger log = LoggerFactory.getLogger(HandoffTests) 

    ... your tests ... 
} 
 

Nếu bạn làm điều này, log sẽ hành xử khá nhiều giống như trong tên miền, dịch vụ, và điều khiển đối tượng, nơi grails tự động tiêm nó cho bạn. Tôi không có ý tưởng tại sao họ không tự động bơm trong các thử nghiệm ...

0

Câu trả lời khác về việc thêm cấu hình log4j trong Config.groovy là quan trọng

debug 'grails.app' 

Nhưng cũng chắc chắn rằng các module bạn thử nghiệm đã bật tính năng ghi nhật ký.

Ví dụ, nếu bạn thấy một số thất bại như thế này từ thử nghiệm của bạn

| Failure: write a GFF3 of a simple gene model(org.company.YourAppIntegrationSpec) 

và debug logging không được hiển thị, sau đó bạn cũng có thể cần thêm các khai thác gỗ cho gói của bạn

debug 'org.company' 
Các vấn đề liên quan