如何解决如何在androidTest仪器测试测试类中从应用程序访问资源?
如果我完全误解了应该使用仪器化测试的时间和地点,请原谅我。
我目前正在为我之前编写的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);
}
}
CategoryButton.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(UnscrollableListView listView)方法连接到UnscrollableListView。这使CategoryButton可以切换使用onClick()方法连接到的UnscrollableListView的可见性。
如何在CategoryButtonInstrumentationTest类内创建一个新的CategoryButton,以便测试其功能?
这就是我试图做的事情。
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
button = (CategoryButton) ((Activity) context).findViewById(R.id.button);
我得到了上下文,据我所知,该上下文包含了应用程序的所有类和资源,然后尝试通过MainActivity的button ID引用该按钮。 不幸的是,当我尝试将ContextImpl强制转换为活动时,出现强制错误。所以我很确定我的第二行是完全错误的。
我还想问一下在这种情况下是否应该进行仪器化测试?我会使用UI测试吗?
谢谢。我将不胜感激。
注意:我正在使用junit 4.12。
解决方法
也许是因为您没有导入课程?您忽略了导入的内容,但是可能由于缺少导入而无法访问文件。这是有关它的文章。
import com.android_examples.com.yourpackagename.CategoryButtonInstrumentatedTest;
public class MainActivity extends Activity {};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。