使用calabash测试为android调用后门函数的问题

时间:2014-08-13 08:40:44

标签: java android ruby calabash

通过后门功能调用android应用程序的方法时遇到问题。

在我们的项目中,我们使用后门来记录事件,使用名为backdoor的calabash函数模拟硬件事件。此函数正在调用,但在perform_action函数中失败,如下所示

undefined method `perform_action' for #<Object:0x253ea38> (NoMethodError).

此后门用于挂钩应用程序功能,我们可以使用我们的测试用例来检查响应,使用后门委派进行设置

我认为调用将参数传递给后门是错误的,请你告诉我如何调用。我已经尝试过这些语句并且无法调用。

我正在使用calabash-android 0.4.18并已导入此功能。

在我的apk中,我的示例java文件是这样的

public class sample {

    public boolean isDemoModel()
    {
            Log.d("Vageesh","Vageesh to test backboor");
            return true;
    }
}

在我的脚本中,我尝试使用以下方式调用,但NoMethod错误

失败
backdoor('isDemoModel()','')
backdoor("'isDemoModel()'","")
backdoor("adb shell am broadcast -a sh.calaba.instrumentationbackend.InstrumentationBackend.isDemoModel",'')

请有人提供有关如何调用应用程序功能的输入。在IoS中,它是直接调用,如backdoor('isDemoModel()','')

此致

Vageesh

3 个答案:

答案 0 :(得分:0)

根据the documentation about backdoors,返回类型必须为void或String。也许这可以解决你的问题?

答案 1 :(得分:0)

后门调用的语法是backdoor(<name>, [args*])。不要使用括号。

backdoor("isDemoModel")是在示例中调用方法的正确方法

哦,是的,你需要更新你的calabash-android版本。

答案 2 :(得分:0)

您的后门方法必须作为活动或应用程序上下文中的公共方法公开。 E.g。

public class TestActivity extends Activity {

     public void isDemoModel(){
        Log.d("Vageesh","Vageesh to test backboor");
        return true;
     }
}