मैं विंडोज 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
}
}