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 需要冒号。
当 运行 我的 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 需要冒号。