测试案例
案例ID | 测试内容 | 测试步骤 | 预期结果 | 问题及解决方案 |
---|---|---|---|---|
AT01 | 推荐位集成 | 按SDK集成步骤集成完后,打开APP集成推荐位页面,查看推荐位数据是否正常加载 | 推荐位数据正常加载 | QA01 QA02 |
AT02 | SDK集成 | APP未登录,推荐位,点击“芒果TV”,应跳转至APP登录页 | 跳转至APP登录页 | QA03 |
AT03 | SDK集成 | SDK应可以正常跳转至微信及正常回调 | 跳转微信正常,回调正常 | QA04 |
AT04 | SDK集成 | 推荐位,点击更多,进入后点击导航栏右上角设置按钮 | 应正常跳转 | QA05 |
问题及解决方案
QA01 SDK初始化异常
运行APP后,安卓logcat筛选“mpweex”日志,检查SDK算法库是否初始化成功,成功会输出以下日志
mpweex : txmcore inited: true
如果初始化为false,则检查mpweex.bmp是否正确替换,检查APP数字签名是否使用APP release的密钥JKS文件,因为SDK会检查APP的数字签名。
QA02 推荐位有数据,但图片未显示
SDK默认未提供图片加载库,需要APP自己实现,因为不同APP使用的图片加载库不一致,SDK无法做到完全统一,故需要APP实现IWXImgLoaderAdapter适配器,iOS实现WXImgLoaderProtocol协议。
参见:
Android扩展图片加载
QA03 未实现IWXUserInfoAdapter适配器
SDK应实现IWXUserInfoAdapter适配器,因为小程序有的游客可以访问,有的必须是用户登录后才可以使用,此时SDK会通过IWXUserInfoAdapter适配器进行登录状态判断。
测试要点1:APP未登录,推荐位,点击“芒果TV”,如果实现了适配器判断用户未登录应跳转APP登录界面或弹toast提示用户先登录。
测试要点2:APP未登录,推荐位,点击“围住猫咪”,实现了适配器及未实现适配器,均应可正常打开小程序。
QA04 未正确处理微信回调
测试要点:APP已登录,推荐位->更多,找到新品速递,找到“支付示例”小程序,打开后点击支付测试->去支付->微信支付,拉起微信后,不支付关闭对话框,点击返回商户,应正常返回APP。
解决方案一: 已有回调类
配置或修改微信回调,注意不是WXPayEntryActivity
App包名.wxapi.WXEntryActivity
在onCreate中增加以下代码
public class WXEntryActivity extends WXCallbackActivity {
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
++ Bundle wxBundle = getIntent().getExtras();
++ if(wxBundle != null) {
++ int commandType = wxBundle.getInt("_wxapi_command_type", 0);
++ if (commandType == 19) {
++ // 拉起微信小程序
++ finish();
++ }
++ }
AndroidManifest.xml:确保配置了taskAffinity
及launchMode
<activity android:name=".wxapi.WXEntryActivity"
android:theme="...your theme"
+ android:exported="true"
+ android:taskAffinity="APP包名"
+ android:launchMode="singleTask"/>
解决方案二:
如果没有对应的回调类,则新增一个:App包名.wxapi.WXEntryActivity
public class WXEntryActivity extends AppCompatActivity {
private static final String TAG = "WXEntryActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ignore callback.
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e(TAG, "onActivityResult");
}
@Override
protected void onNewIntent(Intent intent) {
Log.e(TAG, "onNewIntent");
super.onNewIntent(intent);
setIntent(intent);
}
}
AndroidManifest.xml配置如下:
<activity android:name=".wxapi.WXEntryActivity"
android:theme="@style/mpweexAppTheme.Fullscreen"
android:exported="true"
android:taskAffinity="APP包名"
android:launchMode="singleTask"/>
QA05 未正确完成登录信息同步
测试要点:推荐位-> 更多,未显示最近使用,导航栏右侧设置按钮点击提示“请先登录”,则判断未完成登录信息同步
APP未完成集成文档中登录信息同步
章节的内容。即APP在启动时,需要调用SDK的syncAccount方法,告之SDK用户的登录状态。同时APP在退出登录时,需要调用SDK的onLogout方法,告诉SDK用户已退出登录。
注意调用时机
onLogin:APP每次启动成功,并且用户已登录,即可调用,可多次调用,SDK内部会自行判断。
onLogout:APP用户退出登录时。
参见:
Android登录信息同步