如果我完全误解了使用仪器测试的时间和地点,请原谅。
我目前正在为之前编写的categorybutton类编写categorybuttoninstrumentedtest类。
categorybuttoninstrumentatedtest.java类
public class CategoryButtonInstrumentedTest {
private Context context;
private CategoryButton button;
private UnscrollableListView listView;
@Before
public void setUp() {
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
button = (CategoryButton) ((Activity) context).findViewById(R.id.button);
button.connect(listView);
}
@Test
public void onClickTest() {
boolean start = listView.isMaximized();
button.performClick();
boolean end = listView.isMaximized();
assertNotEquals(start, end);
}
}
类别按钮.java
public class CategoryButton extends androidx.appcompat.widget.AppCompatButton implements View.OnClickListener {
private static final String TAG = CategoryButton.class.getSimpleName();
private UnscrollableListView listView;
public CategoryButton(Context context) {
super(context);
}
public CategoryButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CategoryButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onClick(View view) {
//swap the visibility of the list view
if (listView != null) {
if (!listView.isMaximized()) {
listView.maximize();
} else {
listView.minimize();
}
} else {
Log.d(TAG, "Error: please connect an unscrollable list view to the category button");
}
}
public void connect(UnscrollableListView listView) {
this.listView = listView;
}
}
categorybutton类只是重写button超类的onclick()方法。此外,categorybutton可以使用connect(UncollebleListView listview)方法连接到UncollebleListView。这允许categorybutton使用onclick()方法切换它所连接到的UncollebleListView的可见性。
如何在categorybuttoninstrumentationtest类中创建新的categorybutton,以便测试其功能?
这是我试着做的。
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
button = (CategoryButton) ((Activity) context).findViewById(R.id.button);
我得到了上下文,据我所知,它包含了应用程序的所有类和资源,然后尝试引用mainactivity中id为button的按钮。不幸的是,当我试图将contextimpl强制转换为活动时,出现了一个强制转换错误。所以我很确定我的第二排完全错了。
我还想问,在这种情况下,是否应该进行仪器化测试?我会使用ui测试吗?
谢谢您。我将非常感谢任何帮助。
注意:我使用的是JUnit4.12。
1条答案
按热度按时间x9ybnkn61#
可能是因为你没有导入类?您遗漏了导入的内容,但可能是由于缺少导入而无法访问该文件。这里有一篇关于它的文章。
https://www.android-examples.com/create-and-call-function-in-android-activity-from-another-programming-file/