2013-03-04 4 views
9

मैं प्ले 2 का उपयोग कर एक प्रोजेक्ट स्थापित कर रहा हूं और मैं ग्रहण रिमोट डीबगिंग का उपयोग कर वेबपैप को डीबग करने में सक्षम हूं। हालांकि, मैं अपने परीक्षणों के साथ ब्रेकपॉइंट्स का भी उपयोग करना चाहता हूं। क्या किसी को पता है कि कैसे सेटअप इकाई परीक्षण 'रिमोट डीबगिंग?Play के साथ परीक्षण कैसे डिबग करें! 2.0

+2

इस मदद करता है? http://stackoverflow.com/questions/10859064/how-to-debug-play-2-unit-test-for-server-side – Behe

+0

नहीं, ऐसा नहीं है। मैं नाटक का उपयोग कर रहा हूं और टाइपएफ़ स्टैक नहीं। –

+0

क्या आपने कमांड का प्रयास किया था: 'play debug ~ test' – adis

उत्तर

11

यह तब से हो रहा है जब प्ले (एसबीटी) फोरम रिमोट डीबग के लिए आवश्यक विकल्पों के बिना परीक्षण के लिए अलग जेवीएम फोर्क करता है। आपके पास कम से कम दो विकल्प हैं: नए JVM का कांटा अक्षम करें, परीक्षणों के लिए उपयोग किए गए JVM को अतिरिक्त विकल्प पास करें।

कांटा को अक्षम करने के Build.scala संशोधित करने, fork in (Test) := false जोड़ने के लिए नीचे पूर्ण Build.scala उदाहरण देखें:

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 
) 
} 

अतिरिक्त विकल्प पास करने के लिए, जोड़ने आप इस कोड का उपयोग कर सकते हैं:

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

परीक्षणों को संलग्न करने के लिए आपको पोर्ट 99 9 8 का उपयोग करने के लिए अपना आईडीई कॉन्फ़िगर करना होगा। इसके अलावा, जब भी आप परीक्षण चलाते हैं तो आपको प्रत्येक बार डीबगर को फिर से संलग्न करने की आवश्यकता होगी, जो असुविधाजनक हो सकता है।

+0

आपके उत्तर के लिए धन्यवाद। मैं अब खेल का उपयोग नहीं कर रहा हूं इसलिए मुझे नहीं पता कि यह जवाब सही है और न ही मेरे पास कोशिश करने का समय है। यदि इसमें अधिक वृद्धि होगी तो मैं इसे बाद में स्वीकार कर लेगा। –

+2

मैं यह पुष्टि कर सकता हूं कि यह काम कर रहा है (प्ले 2.1.0) – Skyr

+1

एक बेहतर तरीका है कि कांटा परीक्षण को रोकने के लिए [यहां] (http://stackoverflow.com/a/16742485/508064)। यह आपको ऐप और परीक्षण दोनों के लिए समान कनेक्शन का उपयोग करने की अनुमति देता है और प्ले कंसोल चल रहा है, जबकि कनेक्शन डीबगर को फिर से जोड़ने की आवश्यकता नहीं है। – roterl

0

मैं ग्रहण का उपयोग या बल्कि स्केला आईडीई

बजाय चलाने का

"प्ले" मैं इस आदेश "खेलने डिबग" तो इस संदेश मुद्रित होगा खेलने चलाएँ:

Listening for transport dt_socket at address: 9999 

सामान्य $ शीघ्र खेल के लिए प्रकट होगा। "दूरस्थ जावा आवेदन के लिए" नज़र बाईं तरफ - "> डीबग विन्यास ... भागो" और "नया विन्यास लॉन्च" पर क्लिक करें ( तो इस आदेश "रन"

ग्रहण से

दर्ज करते हैं, मैं ब्रेकपाइंट सेट और क्लिक छोटा आइकन, ऊपरी बाएं, एक 'नया दस्तावेज़' आइकन जैसा दिखता है)। डिफ़ॉल्ट पोर्ट 8000 होगा, इसे 99 99 में बदलें और मशीन को बदलें, शायद आप स्थानीयहोस्ट का उपयोग करेंगे। और [डीबग] बटन

पर क्लिक करना चाहिए जो इसे करना चाहिए। बस अपने ब्राउज़र पर सामान्य http://localhost:9000 लोड करें बस एप्लिकेशन को ब्रेकपॉइंट पर हिट करने के लिए प्रतीक्षा करें।

+2

करना चाहिए, यह वास्तव में डीबगिंग यूनिट परीक्षणों में मदद नहीं करता है, हालांकि यह एक उपयोगी उत्तर होगा यदि यह एक प्ले ऐप – Stowelly

+0

रिमोट डीबगिंग के लिए था तो यह मेरी मदद करता है :) – JustGoscha

0

टेस्ट पर्यावरण में कांटा और समानांतर निष्पादन को अक्षम करके, आप परीक्षण डीबग कर सकते हैं। केवल आप अपने build.sbt फ़ाइल की इन पंक्तियों के अंत जोड़ना चाहिए:

parallelExecution in Test := false 
fork in Test := false 
संबंधित मुद्दे