2013-03-04 28 views
9

Tôi đang thiết lập một dự án bằng cách sử dụng Play 2 và tôi đã có thể gỡ lỗi webapp bằng cách sử dụng gỡ lỗi từ xa eclipse. Mặc dù, tôi cũng muốn sử dụng các điểm ngắt dọc theo các thử nghiệm của mình. Có ai biết làm thế nào thiết lập đơn vị kiểm tra 'gỡ lỗi từ xa?Cách gỡ lỗi kiểm tra bằng Play! 2.0

+2

Điều này có giúp ích không? http://stackoverflow.com/questions/10859064/how-to-debug-play-2-unit-test-for-server-side – Behe

+0

Không, nó không. Tôi đang sử dụng chơi và không phải là ngăn xếp typesafe. –

+0

Bạn đã thử lệnh: 'play debug ~ test' – adis

Trả lời

11

Điều này xảy ra vì Play (SBT) dành riêng JVM cho các thử nghiệm, không có tùy chọn cần thiết để gỡ lỗi từ xa. Bạn có ít nhất hai tùy chọn: vô hiệu hóa ngã ba của JVM mới, chuyển các tùy chọn bổ sung cho JVM được sử dụng cho các thử nghiệm.

Để vô hiệu hóa ngã ba, sửa đổi Build.scala, thêm fork in (Test) := false, xem đầy đủ Build.scala ví dụ dưới đây:

import sbt._ 
import play.Project._ 

object ApplicationBuild extends Build { 

    val appName   = "so1" 
    val appVersion  = "1.0-SNAPSHOT" 

    val appDependencies = Seq(
    // Add your project dependencies here, 
    javaCore, 
    javaJdbc, 
    javaEbean 
) 

    val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here 
    Keys.fork in (Test) := false 
) 
} 

Để vượt qua tùy chọn bổ sung, thêm bạn có thể sử dụng mã này:

val main = play.Project(appName, appVersion, appDependencies).settings(
    Keys.javaOptions in (Test) += 
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998" 
) 

Bạn sẽ cần phải cấu hình IDE của bạn để sử dụng cổng 9998 để đính kèm vào các bài kiểm tra. Ngoài ra, bạn sẽ cần phải đính kèm lại trình sửa lỗi mỗi khi bạn chạy thử nghiệm, điều đó có thể bất tiện.

+0

Cảm ơn bạn đã trả lời của bạn. Tôi không sử dụng chơi nữa nên tôi không biết câu trả lời này có chính xác hay không cũng không có thời gian để thử nó. Nếu nó sẽ có nhiều upvotes hơn, sau này tôi sẽ đánh dấu nó là chấp nhận. –

+2

Tôi có thể xác nhận nó đang hoạt động (Play 2.1.0) – Skyr

+1

một cách tốt hơn là để ngăn chặn các thử nghiệm để ngã ba như mô tả [ở đây] (http://stackoverflow.com/a/16742485/508064). Điều này cho phép bạn sử dụng cùng một kết nối cho cả ứng dụng và thử nghiệm và kết nối được mở trong khi bảng điều khiển phát đang chạy để không cần phải gắn lại trình gỡ rối. – roterl

0

tôi sử dụng eclipse hay đúng hơn scala ide

thay vì chạy "chơi" tôi chạy lệnh này "chơi debug" sau đó chơi sẽ in thông điệp này:

Listening for transport dt_socket at address: 9999 

bình thường có $ prompt để chơi sẽ xuất hiện. sau đó nhập lệnh "chạy"

từ nhật thực, tôi đặt điểm ngắt và nhấp "Chạy -> Cấu hình gỡ lỗi ..." tìm "Ứng dụng Java từ xa" ở bên trái và nhấp vào "Khởi chạy cấu hình mới" (biểu tượng nhỏ, trên cùng bên trái, trông giống như biểu tượng 'tài liệu mới'). cổng mặc định sẽ là 8000, thay đổi thành 9999 và thay đổi máy, có thể bạn sẽ sử dụng localhost. và nhấp vào nút [Gỡ lỗi]

nên thực hiện điều đó. chỉ cần tải bình thường http://localhost:9000 trên trình duyệt của bạn chỉ cần đợi ứng dụng đạt đến điểm ngắt.

+2

điều này không thực sự giúp đỡ với các thử nghiệm đơn vị gỡ lỗi mặc dù, sẽ có được một câu trả lời hữu ích nếu nó đã được gỡ lỗi từ xa một ứng dụng chơi – Stowelly

+0

nó đã giúp tôi :) – JustGoscha

0

Bằng cách vô hiệu hóa thực hiện ngã ba và song song trong môi trường Kiểm tra, Bạn có thể gỡ lỗi kiểm tra. Chỉ bạn nên thêm những dòng này vào cuối build.sbt tệp:

parallelExecution in Test := false 
fork in Test := false