在Gradle中每次构建之前运行单元测试

时间:2016-02-07 15:57:04

标签: android unit-testing gradle build.gradle

如何在Android项目中配置build.gradle以在每次调试或发布版本之前运行所有单元测试?我知道我可以使用dependsOn设置任务依赖项,但是如何为单元测试任务指定它?我想为我的项目的每个(Android和普通Java)模块执行此操作,是否可能?

2 个答案:

答案 0 :(得分:12)

您是否有特殊任务只能运行单元测试?或者您可以自由地将其设置为简单<?php // Replace with the real server API key from Google APIs $apiKey = "my apikey"; // Replace with the real client registration IDs $registrationIDs = array("red id1", "reg id2"); // Message to be sent $message = "Your message e.g. the title of post"; // Set POST variables $url = 'https://gcm-http.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $registrationIDs, 'data' => array( "message" => $message ), ); $headers = array( 'Authorization: key=' . $apiKey, 'Content-Type: application/json' ); // Open connection $ch = curl_init(); // Set the URL, number of POST vars, POST data curl_setopt( $ch, CURLOPT_URL, $url); curl_setopt( $ch, CURLOPT_POST, true); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields)); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); // print the result if you really need to print else neglate this echo $result; ?> (或更常见的testtestDebug)?我们说,您希望每次调用testReleasetestDebug任务时都运行testReleaseassembleDebug。然后,正如您所指出的那样,您可以使用assembleRelease任务属性。例如这样:

dependsOn

必须将此配置添加到您需要的每个build.gradle脚本(在项目的每个模块中)。如果您有许多测试任务,可以这样设置任务依赖:

assembleDebug.dependsOn testDebug
assembleRelease.dependsOn testRelease

当然,您可以尝试使用tasks.assembleRelease.dependsOn { project.tasks.findAll { task -> task.name.startsWith('testRelease') } } allprojects(您可以阅读here)在根build.gradle脚本的根目录中设置此依赖关系,但是您必须在根脚本中应用subprojects插件,否则将无法找到任务。

答案 1 :(得分:1)

转到“运行/调试配置”,然后选择您的应用程序配置。在右侧面板的底部,在Before launch:下,单击+按钮,然后选择Run another configuration。在那里,选择运行测试的配置。

在启动之前,设置测试用例命令以运行它们。enter image description here

enter image description here

其他预处理任务请参考here