【问题标题】:Share test classes between test and androidTest在 test 和 androidTest 之间共享测试类
【发布时间】:2016-09-15 19:55:26
【问题描述】:

我有 Android 应用项目,在 Android Studio 中工作。 我的应用程序文件在my.package 包中 我的单元测试在my.package.unittest 包中 我的浓缩咖啡测试在my.package.androidtest 包中

在我的一项 espresso 测试中,我需要使用 unittest 包下的一个类,但我做不到。

我需要使用的 Unittest 类位于 app/src/test/java 文件夹中:

package my.package.unittest;
public class HelperClass {
...
}

我尝试使用的文件位于 app/src/androidTest/java 文件夹中:

package my.package.androidtest;

import static my.package.unittest.*;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class AppTest {
    HelperClass.staticMethod();
}

我得到的错误是:无法解析符号 HelperClass

附加信息:

import my.package.unittest.HelperClass;

这本身会给出“无法解析符号”的错误。

在我的 Espresso 测试中使用 UnitTests 中的 HelperClass 的正确方法是什么?

【问题讨论】:

标签: android unit-testing


【解决方案1】:

@Jeremy Kao 指出了正确答案。

1 -> 在 app/src 中创建一个目录。你可以称之为 testShared。

2 -> 将你的类放在这个目录中。

3 -> 在 app/build.gradle 中放置:

android.sourceSets {  
    test {
        java.srcDirs += "$projectDir/src/testShared"
    }

    androidTest {
        java.srcDirs += "$projectDir/src/testShared"
    }
}

把它放在 android 闭包之外的任何地方。

4 -> 玩得开心!

资源:

http://trickyandroid.com/android-test-tricks-sharing-code-between-unit-ui-tests/

【讨论】:

  • 我用main.java.srcDirs代替了java.srcDirs,否则它不起作用。
  • java.srcDirsmain.java.srcDirs 都为我工作。此外,闭包不需要放在android 闭包之外。可以放在里面,但是你只需要把android.sourceSets改成sourceSets
  • 确实,您的观察非常正确@MartinMelka。谢谢!
  • 知道如何防止 Android Studio 删除“标记为测试源”标记吗? gradle 同步后重新标记真的很烦人..
  • 资源链接失效了,能否更新一下?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2018-04-01
  • 2012-09-15
相关资源
最近更新 更多