Calabash 测试 Android,使用后门。找不到方法

Calabash testing Android, using back door. Method not found

当 运行 我的 Calabash 测试时,我在 android 中有一个我试图调用的后门方法。

如 calabash-android 文档中所建议的,后门方法位于 Application 子类中。

https://developer.xamarin.com/guides/testcloud/calabash/working-with/backdoors/

但我收到以下错误:

Error: {"result"=>"No such method found: setTestToken:([String])", "outcome"=>"ERROR", "details"=>"{receiverClass=com.test.mobile.ui.MainActivity, error=No such method found: setTestToken:([String]), receiverString=com.test.mobile.ui.MainActivity@577ecb1, methodName=setTestToken:}"}

MainActivity 是当前 activity.

如何让 Calabash 执行 Application 子类中的方法而不是尝试访问当前 Activity?

另一个问题的答案建议在此处调用这些命令是命令和输出。

query("* index:0"):

"class" => "com.android.internal.policy.PhoneWindow$DecorView",

 query("* index:0", :getContext, :toString)

com.test.mobile.ui.MainActivity@577ecb1

query("* index:0", :getContext, :getApplicationContext, :toString)

com.test.mobile.TestApplication@577ac49

方法也如下所示:

public String setTestToken(String token) {
    if (DEBUG) {
        DefaultPreferences.getInstance().edit().putTestToken(token).commit();
    Logger.d(TAG, "Test token set: " + token);

    //This is a return for Calabash so that it knows the token has been set.
    return DefaultPreferences.getInstance().getTestToken();
    }
    Logger.d(TAG, "Test token not set");

    //This is a return for Calabash so that it knows the token has not been set.
    return null;
}

calabash 的调用如下所示:

backdoor('setTestToken:', token)

iOS 像这样调用后门:

backdoor('setTestToken:', token)

Android 像这样调用后门:

backdoor('setTestToken', token)

删除冒号解决了 Android 的问题。

iOS 需要冒号。