मेरे पास एक प्ले है! प्रोजेक्ट जहां मैं कुछ कोड कवरेज जानकारी जोड़ना चाहता हूं। अब तक मैंने JaCoCo और scct को आजमाया है। पूर्व में समस्या यह है कि यह बाइटकोड पर आधारित है, इसलिए ऐसा लगता है कि स्काला कंपाइलर, जैसे copy
या canEqual
द्वारा स्वत: उत्पन्न किए गए तरीकों के लिए अनुपलब्ध परीक्षणों के बारे में चेतावनी देना प्रतीत होता है। एससीटीटी एक बेहतर विकल्प प्रतीत होता है, लेकिन किसी भी मामले में मुझे दोनों के साथ परीक्षण के दौरान कई त्रुटियां मिलती हैं।प्ले पर कोड कवरेज! प्रोजेक्ट
मुझे स्कैक्ट के साथ चिपकने दें। मुझे अनिवार्य रूप से डेटाबेस से कनेक्ट करने का प्रयास करने वाले प्रत्येक परीक्षण के लिए त्रुटियां मिलती हैं। मेरे कई परीक्षण स्मृति में एच 2 डेटाबेस में कुछ फिक्स्चर लोड करते हैं और फिर कुछ दावे करते हैं। मेरे Global.scala
override def onStart(app: Application) {
SessionFactory.concreteFactory = Some(() => connection)
def connection() = {
Session.create(DB.getConnection()(app), new MySQLInnoDBAdapter)
}
}
शामिल करते हुए परीक्षण आमतौर पर
class MySpec extends Specification {
def app = FakeApplication(additionalConfiguration = inMemoryDatabase())
"The models" should {
"be five" in running(app) {
Fixtures.load()
MyModels.all.size should be_==(5)
}
}
}
लाइन running(app)
मुझे एक काम कर आवेदन के संदर्भ में एक स्मृति डेटाबेस से जुड़ा में एक परीक्षण चलाने के लिए अनुमति देता है की तरह एक ब्लॉक में बंद होते हैं कम से कम आमतौर पर। लेकिन जब मैं कोड कवरेज कार्यों को चलाता हूं, जैसे स्कैट coverage:doc
, मुझे डेटाबेस से कनेक्ट करने से संबंधित त्रुटियों के लॉट मिलते हैं।
क्या और भी अधिक अजीब है की तरह कम से कम 4 विभिन्न त्रुटियों देखते हैं कि, यह है:
- ObjectExistsException: कैश खेलने पहले से मौजूद है
- SQLException: एक पूल है कि पहले से ही किया गया है से एक कनेक्शन प्राप्त करने के लिए प्रयास कर रहा है बंद
- कॉन्फ़िगरेशन त्रुटि [डेटाबेस से कनेक्ट नहीं कर सकते [डिफ़ॉल्ट]]
- कोई उपयुक्त ड्राइवर JDBC मिला: एच 2: मेम: खेलने-परीक्षण - 410454547
क्यों डिफ़ॉल्ट कॉन्फ़िगरेशन में लॉन्चिंग परीक्षण डेटाबेस से कनेक्ट करने में सक्षम है, जबकि scct (या JaCoCo) के संदर्भ में चलते समय कैश और डीबी प्रारंभ करने में विफल रहता है?
साथ एसबीटी चलाने वैसे, एक बात मैं हमेशा संदिग्ध के रूप में देखा है तथ्य यह है कि मैं एक 'MySqlInnoDBAdapter' उपयोग करने के लिए आवेदन की घोषणा है, लेकिन परीक्षण पर चलने एक इन-मेमोरी एच 2 उदाहरण। किसी भी तरह जादू 'फैक एप्प्लिकेशंस' में होना चाहिए, लेकिन मुझे आश्चर्य है कि इस मुद्दे के साथ हाथ में – Andrea