我目前正在使用
运行一系列测试adb shell am instrument -w ${PKGNAME}.test/android.support.test.runner.AndroidJUnitRunner
来自bash脚本。此外,在调试和编写这些测试时,我也从Android Studio运行它们,因此我失去了cmd行能力。
我想要做的是拥有一个系统属性或buildConfig变量,我只能在我的测试中设置为true,并且能够在我的android代码中使用它。
我似乎找不到一个gradle task / config来为这种类型的测试设置它。我发现唯一关闭的是testOptions,但这似乎只适用于单元测试。
答案 0 :(得分:0)
完美的解决方案是弄清楚如果您目前正在进行测试,如何避免必须知道代码。您没有解释为何需要此信息,请查看Comtaler's answer to a similar question。这可能正是你所需要的。
答案 1 :(得分:0)
要仅为androidTest / instrumantation / espresso测试更改某些设置,我想出了以下解决方案:
//DbHelper
public class DbHelper extends SQLiteOpenHelper {
public static AtomicBoolean isTestMode = new AtomicBoolean(false);
private static String getDBName() {
if (isTestMode.get()){
return null; // use in memory sqlite db
} else {
return DB_NAME;
}
}
// within my unit test
@Rule
public ActivityTestRule<MyActivity> mActivityRule = new ActivityTestRule<MyActivity>(
MyActivity.class){
@Override
protected void beforeActivityLaunched() {
super.beforeActivityLaunched();
DbHelper.isTestMode.set(true);
}
@Override
protected void afterActivityFinished() {
super.afterActivityFinished();
DbHelper.isTestMode.set(false);
}
};