java—如何从androidtest(instrumented test)测试类中的应用程序访问资源?

ovfsdjhp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(228)

如果我完全误解了使用仪器测试的时间和地点,请原谅。
我目前正在为之前编写的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。

x9ybnkn6

x9ybnkn61#

可能是因为你没有导入类?您遗漏了导入的内容,但可能是由于缺少导入而无法访问该文件。这里有一篇关于它的文章。
https://www.android-examples.com/create-and-call-function-in-android-activity-from-another-programming-file/

import com.android_examples.com.yourpackagename.CategoryButtonInstrumentatedTest;
public class MainActivity extends Activity {};

相关问题