我正在尝试为自定义对话框构建单元测试用例,以使用Roboletric扩展Android DialogFragment,但遇到了麻烦。基本上,单元测试框架不能使片段“可见”。因此,我无法进行任何测试。
无论如何,代码是非常基本的,并且基于以下线程:
How to create a Custom Dialog box in android?
这是我的应用代码:
```{r cars}
mtcars$am <- sprintf("(%s)", as.character(mtcars$am))
knitr::kable(mtcars, format = "html", escape = FALSE)
```
超级基本的自定义布局
public class CustomDialog extends DialogFragment {
public Dialog mCustomDialogTest;
public EditText mEditText;
public Dialog onCreateDialog(Bundle savedInstanceState) {
mCustomDialogTest = new Dialog(getActivity());
mCustomDialogTest.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
mCustomDialogTest.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
mCustomDialogTest.setContentView(R.layout.custom_dialog);
mCustomDialogTest.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mEditText = (EditText) mCustomDialogTest.findViewById(R.id.edit_text_id);
return mCustomDialogTest;
}
}
最后是我的单元测试:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/edit_text_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:hint="@string/app_name"
android:inputType="text" />
</LinearLayout>
它总是断言它是不可见的:(然而,代码在设备上工作正常。
这是gradle中的相关部分:
@Test
public void testCustomDialog() {
CustomDialog customDialog = new CustomDialog();
customDialog.show(mActivity.getFragmentManager(), getClass().getName());
boolean visible = customDialog.isVisible(); //This never works :(
Assert.assertTrue("Dialog is visible", visible);
}
有人可以帮助我吗?我完全依赖于单元测试的最基本功能。
谢谢!
答案 0 :(得分:0)
尝试使用$('.x').val() == 'Y'
方法而不是getUserVisibleHint
方法