当前位置: 首页 > 知识库问答 >
问题:

黑盒浓缩咖啡测试没有在路径上找到类

夏兴平
2023-03-14

我在用浓缩咖啡做黑盒测试。我遵循了另一个线程的指导(Android Espresso如何使用apk编写测试?)。但是我的测试在DexPathList上找不到类。错误消息为:

导致:java.lang.ClassNotFoundException:没有找到类"com.twitter.android.DispatchActive"上的路径:DexPathList[[zip文件"/system/Framework/android.test.runner.jar", zip文件"/data/app/...test-2.apk", zip文件"/data/app/...-2.apk"], nativeLibrary目录=[/data/app-lib/...... test-2,/data/app-lib/...-2, /vendor/lib, /system/lib]]

我正在测试的应用程序是Twitter,我没有源代码。所以我在android Studio中创建了一个android项目。

清单文件如下所示:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="my.test">

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/AppTheme">

    </application>

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.twitter.android">
    </instrumentation>
</manifest>

测试类:

@RunWith(AndroidJUnit4.class)
public class Replayer {
    private static final String CLASSNAME = "com.twitter.android.DispatchActivity";

    private static Class<? extends Activity> activityClass;
    static {
        try {
            activityClass = (Class<? extends Activity>) Class.forName(CLASSNAME);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    @Rule
    public final ActivityTestRule<?> activityRule
            = new ActivityTestRule<>(activityClass);

    @Test
    public void launchMain() {
        Espresso.onView(ViewMatchers.withText("Log in")).perform(ViewActions.click());
    }
}

我在DexPathList上没有看到目标应用程序。我是否误解了我的项目?

共有1个答案

吴开宇
2023-03-14

嗯,我经过近一个月的探索才发现。。。需要在生成中指定目标应用程序。gradle文件,如下所示:

android {
    ....
    defaultConfig {
        ...
        applicationId "com.twitter.android"
    }
    ...
}

gradle将在android清单文件中自动生成instrumentation节点。请注意,在清单中手动添加android:targetPackage将不起作用。

 类似资料:
  • 在我的主要活动中,我有initUi函数,它将触发对webviewActivity的意图,在webviewActivity中,有一个FragWebView,其中加载了url。 以下是来自FragWebView的示例代码: 我从我的主要活动中传递打开webview的意图是: 请让我知道如何解决这个问题。 问候

  • 我在做Espresso测试时遇到了一个问题,我知道Espresso不能处理动画,所以我在下面做了。-禁用我的测试设备窗口动画,过渡动画和动画师持续时间比例都设置为关闭(这不起作用)-然后我试图在我的代码中添加一个标志(如。espresso_testing=true。如果为true,我的代码将跳过调用所有startAnimation()函数调用。--->这很管用。然而,在编写espresso测试用例

  • 浓缩咖啡测试很烦人,因为像这样的代码 给出如下错误

  • 我很难说服新的Android构建系统运行测试。在运行测试时,它给出了错误,这在其他问题中已经讨论过,但其中没有任何问题能够解决我的问题。 我已经将它剥离下来,这样我的测试包就完全不依赖于主包(),但仍然存在启动活动的问题。 我的测试活动: 和我的测试类: 建筑的相关部分。等级: 我获得的完整堆栈跟踪是: 我没有包括我的,因为我读到的所有内容都表明,我不需要为添加意图,但是我无论如何都试图这样做,结

  • 我有一个MainMenu活动,它从文件中获取数据并显示出来。我希望数据在每次浓缩咖啡测试开始时被删除,并且在测试之间不会持续。 我尝试了以下方法: 但是,它不会删除文件。我认为上下文可能不正确。有没有办法在浓缩咖啡测试开始时清除内部存储? 这些文件是。ser '文件。