2013-06-07 4 views
11

मैं विंडोज 7, 64 बिट पर एंड्रॉइड स्टूडियो के साथ काम कर रहा हूं। मैं एंड्रॉइड स्टूडियो (या कोई इंटेलिज आईडीई) पर नोबी हूं।एंड्रॉइड स्टूडियो में कैलाबैश-एंड्रॉइड समर्थन के बारे में प्रश्न: रूबी, संपादन सुविधाएं और कदम, परीक्षण लॉन्च करना

मैंने डाउनलोड किया और रूबी 1.9.3, रूबी DevKit और हुक़्क़ुम-एंड्रॉयड स्थापित किया है और मैं सफलतापूर्वक कमांड लाइन (हुक़्क़ुम-एंड्रॉयड रन) का उपयोग कर

मैं भी स्थापित करने में कामयाब रहे अपने Android एप्लिकेशन पर ककड़ी परीक्षण चला सकते हैं एंड्रॉइड स्टूडियो के लिए ककड़ी प्लगइन, ताकि मेरी फीचर फाइलें स्वतः पूर्ण और इस तरह से लाभान्वित हो सकें।

मैं निम्नलिखित प्रश्न हैं:

  • मैं एक रूबी प्लगइन स्थापित कर सकते हैं (RubyMine?) इतना है कि मैं अपने परीक्षण के लिए कदम परिभाषाओं लिख सकता है? यदि ऐसा है, तो मैंने सुना है कि लोग ककड़ी परीक्षण डीबग कर सकते हैं: क्या यह Android ऐप्स के लिए एंड्रॉइड स्टूडियो में भी पूरा किया जा सकता है?

  • क्या मैं एंड्रॉइड स्टूडियो से एंड्रॉइड ऐप के लिए कैलाबैश परीक्षण लॉन्च कर सकता हूं? यदि हां, तो मैं इसके बारे में कैसे जाऊं?

  • क्या मैं एंड्रॉइड ऐप के ग्राडल बिल्ड में कैलाबैश का उपयोग करके स्वचालित (स्वचालित) परीक्षण एकीकृत कर सकता हूं? यदि हां, तो मैं इसके बारे में कैसे जाऊं?

धन्यवाद!

अद्यतन:

मैं एक कस्टम Gradle Plugin<Project> संलग्न (कि नीचे नाली कोड देख रहा हुक़्क़ुम-एंड्रॉयड परीक्षण चलाने के लिए एक बुनियादी समर्थन प्राप्त करने हेतु लिखा

ये मैन्युअल चरणों अभी भी आवश्यक हैं:।
- रूबी 1.9.x और उसके Devkit आदि स्थापित करें, हुक़्क़ुम-एंड्रॉयड मणि स्थापित करते हैं,
- एंड्रॉयड Gradle प्लगइन का उपयोग कर (मैनुअल या स्वचालित) का निर्माण उचित APK (एक का स्वाद)

ऐप के build.gradle में, apply plugin: 'calabash' जोड़कर अब काम करता है और यह बिल्ड को कैलाबैश परीक्षण के रूप में एक फीचर फ़ाइल चलाने की अनुमति देता है।
यह उपलब्ध उत्पाद-स्वाद (बिल्ड-स्वाद) की जांच करता है और उचित कैलाबैश संबंधित कार्यों को जोड़ता है (उदा। calabashDebug या calabashFlavor1Release, आदि)।

package com.mediaarc.gradle.plugins 

    import org.gradle.api.* 
    import org.gradle.api.plugins.* 
    import org.gradle.api.tasks.* 

    class CalabashPlugin implements Plugin<Project> { 
     void apply(Project project) { 
      project.extensions.create("calabash", CalabashPluginExtension) 

      if (!project.android) { 
       throw new IllegalStateException("Android plugin is not configured.") 
      } 

      project.android.applicationVariants.each { variant -> 
       final def buildName = variant.name 
       final def buildVar = variant.baseName 
       final def packageApp = variant.packageApplication; 

       project.task("doPrepare${buildName}") << { 
        project.calabash.init(project, buildVar) 
        def apkFile = packageApp.outputFile 
        project.calabash.writeCommandFile(apkFile) 
       } 

       project.task("doClean${buildName}") << { 
        project.calabash.init(project, buildVar) 

        project.calabash.clean() 
       } 

       project.task("calabash${buildName}", type: Exec, dependsOn: [ project["assemble${buildName}"], project["doPrepare${buildName}"] ]) { 
        println project["assemble${buildName}"] 
        project.calabash.init(project, buildVar) 
        configureTask(project[name], buildName) 

        project.calabash.execute(project[name]) 
       } 

       project.task("cleanCalabash${buildName}", dependsOn: project["doClean${buildName}"]) { 
        project.calabash.init(project, buildVar) 
        configureClean(project[name], buildName) 
       } 
      } 
     } 

     private def configureTask(def task, def buildVariant) { 
      task.group = JavaBasePlugin.VERIFICATION_GROUP 
      task.description = "Runs calabash tests for Build '${buildVariant}'" 
     } 

     private def configureClean(def task, def buildVariant) { 
      task.group = BasePlugin.BUILD_GROUP 
      task.description = "Deletes the calabash tests results for Build '${buildVariant}'" 
     } 
    } 

    class CalabashPluginExtension { 
     def root = 'src/calabash' 
     def resultFile = "calabash-results.html" 

     //protected def hash = new Object() 
     protected File outputFile 
     protected File workingDir 
     protected File tmpFile 

     protected init(Project project, def buildVariant) { 
      if (!buildVariant) { 
       buildVariant = "debug" 
      } 

      File rootFile = project.file(root) 
      outputFile = new File(project.file("build/reports/calabash/${buildVariant}"), resultFile) 
      workingDir = rootFile 
     } 

     protected writeCommandFile(def apkFile) { 
      if (!workingDir.exists()) { 
       throw new IllegalStateException("The root directory for the calabash-tests could not be found: '${workingDir}'") 
      } 

      if (!(new File(workingDir, "features").exists())) { 
       throw new IllegalStateException("The required 'features' directory could not be found in '${workingDir}'") 
      } 

      outputFile.parentFile.mkdirs() 

      def calabashCmd = "cd ${workingDir.canonicalPath}\r\necho calabash-android run \"${apkFile.canonicalPath}\" --format html --out \"${outputFile.canonicalPath}\"\r\n" 
      getCommandFile().write calabashCmd 
     } 

     protected execute(Exec exec) { 
      exec.commandLine 'cmd', '/c', getCommandFile().canonicalPath 
     } 

     protected clean() { 
      outputFile.delete() 
     } 

     private File getCommandFile() { 
      if (!tmpFile) { 
       tmpFile = File.createTempFile("run-calabash", ".bat") 
       tmpFile.deleteOnExit() 
      } 
      return tmpFile 
     } 
    } 

उत्तर

3

बहुत अच्छा सवाल:

नीचे ग्रूवी फ़ाइल है कि (अब केवल के लिए Windows) अपने 'हुक़्क़ुम' प्लगइन को लागू करता है। Xamarin अपने टेस्ट क्लाउड उत्पाद में webinar on using Calabash tests था। वार्ता के अंत में परीक्षण पारिस्थितिक तंत्र की स्थापना और एंड्रॉइड के लिए कैलाबैश परीक्षण चलाने के साथ हाथों पर बहुत कुछ है। वहां बहुत सारे हैं जो आपके पर्यावरण पर लागू नहीं होते हैं, लेकिन कार्ल क्रुको से कुछ बहुत अच्छी टिप्स और अंतर्दृष्टि - कैलाबैश-एंड्रॉइड के मुख्य योगदानकर्ताओं में से एक है।

संबंधित मुद्दे