Android studio mock build variant - 如何包含模拟类?

时间:2016-08-14 00:54:04

标签: android android-studio android-gradle

我尝试在我的应用中设置类似于Android Testing Codelab的测试,并在app / build.gradle中创建了一个模拟构建变体来执行此操作:

productFlavors {
    mock {

    }
    prod {

    }
}

然后我将构建变量设置为mockDebug,在src /目录中创建了一个模拟文件夹,然后在模拟文件夹中创建了一个模拟活动(ThreePaneMockActivity)和其他类(ThreePaneMockView,ThreePaneMockPresenter)。之后,我尝试运行模拟活动以开始测试我创建的自定义视图(ThreePaneWindow)。在运行模拟活动时,ap崩溃时会出现以下问题引起的异常:

  

引起:java.lang.ClassNotFoundException:没有找到类" android.view.ThreePaneMockView"在路径上:DexPathList ....

ThreePaneMockView与ThreePaneMockActivity位于同一个软件包中,因此我猜测我的app build.gradle文件存在问题,该文件不构建该类文件并将其包含在应用程序包中。此外,Android正在寻找" android.view.ThreePaneMockView"而不是在我的模拟包中。

那么,我的模拟构建变体出了什么问题呢?如何在构建中正确包含所有模拟类?

编辑:文件夹层次结构:

src/
 |
 |---main/
 |     |
 |     |---java/com/wilee8/coyotereader3/threepanewindow/
 |          |
 |          |---ThreePaneWindow.java
 |---mock/
       |
       |---java/com/wilee8/coyotereader3/
            |
            |---ThreePaneMockActivity.java
            |---ThreePaneMockPresenter.java
            |---ThreePaneMockView.java

ThreePaneMockView扩展了LinearLayout,它是导致异常的ThreePaneMockActivity中的以下行:

ThreePaneMockView view = (ThreePaneMockView)
            getLayoutInflater().inflate(R.layout.view_three_pane_mock, null);

R.layout.view_three_pane_mock是在mockDebug变体中创建的,并且在顶层有一个ThreePaneMockView。

并且有

因此输入此响应让我得到答案,它与配置构建变体无关。当我仔细检查R.layout.view_three_pane_mock顶部的标签时,我意识到它需要。我改变了它并且它工作了 - 它仍然崩溃,但是新的错误。

0 个答案:

没有答案