我有一个多维android gradle项目,该项目需要很长时间才能构建且需要很长时间进行测试。 我有一个二维的flaver定义。 第一个维度具有2个项目值,第二个维度具有4个环境定义,并且有3种构建类型。
这将导致2x4x3 = 24个构建变体。 我想以某种方式进行优化,即只构建一个构建变体,而仅一个构建变体将用于在ci环境中运行单元测试。
build.gradle
gradlew clean --refresh-dependencies
我以前会清理所有东西,
gradlew assembleDebug
然后组装Debug变体,
gradlew testAdvancedFlavorDevelopmentDebugUnitTest
,然后尝试在一种调试版本上仅运行单元测试:
gradlew test
->这不起作用
如果我运行gradlew testDebugUnitTest
,则所有构建变体都已构建(例如Release版本),测试就可以了,但这需要很长时间!
也尝试gradlew test
->不起作用
我认为我可以将单元测试移至另一个目录,而不是测试目录,例如testAdvancedFlavorDevelopment,然后当我输入 //locate the default truststore
String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
try (FileInputStream fis = new FileInputStream(filename)) {
keystore.load(fis, "changeit".toCharArray());
}
CertificateFactory cf = CertificateFactory.getInstance("X.509");
//Input stream to cert file
Certificate caCert = cf.generateCertificate(IOUtils.toInputStream(CA_CERT));
keystore.setCertificateEntry("ca-cert", caCert);
//can only save to /tmp from a lambda
String certPath = "/tmp/CustomTruststore";
try (FileOutputStream out = new FileOutputStream(certPath)) {
keystore.store(out, "MyPass".toCharArray());
}
System.setProperty("javax.net.ssl.trustStore", certPath);
时,只会启动testAdvancedFlavorDevelopmentDebug和testAdvancedFlavorDevelopmentDebugInstantRun的测试。
但是必须有一种方法可以让测试位于测试目录中,并通过gradlew命令强制执行,以便仅对一个特定的buildvariant进行编译和单元测试!有什么想法吗?
tia luke