Code Coverage
10592 ワード
JacocoをJetpack Componentプロジェクトに適用してコードオーバーライドを試みることにした.
依存項目の追加
jacocoVersion = '0.8.7'
dependencies {
...
classpath "org.jacoco:org.jacoco.core:$jacocoVersion"
}
プラグインの追加
{
...
id 'jacoco'
}
タスクの追加
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) {
reports {
html.enabled(true)
xml.enabled(true)
}
def fileFilter = ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
'**/data/models/*']
def kotlinClasses = fileTree(dir: "${buildDir}/tmp/kotlin-classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories.setFrom(files([mainSrc]))
classDirectories.setFrom(files([kotlinClasses]))
executionData.setFrom(fileTree(dir: "$buildDir", includes: [
"jacoco/testDebugUnitTest.exec",
"outputs/code-coverage/connected/*coverage.ec"
]))
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
jacoco.excludes = ['jdk.internal.*']
}
testOptionsの追加
android {
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
testにrobolectricを追加
dependencies {
testImplementation "org.robolectric:robolectric:4.5.1"
}
targetsdkバージョンのホットスポットがあります.test code
@RunWith(RobolectricTestRunner::class)
class IntroScreenTest {
@get: Rule
val composeTestRule = createComposeRule()
@Before
fun setUp() {
composeTestRule.setContent {
IntroScreen(
TITLE,
CONTENT,
DRAWABLE
)
}
}
@Test
fun `text as expected`() {
with(composeTestRule) {
onNodeWithText(TITLE).assertIsDisplayed()
}
}
companion object {
private const val TITLE = "경찰청의 안전드림 앱과\n함께 사용을 권장드립니다."
private const val CONTENT = "안전드립앱에서 사전 지문등록을 하시면\r\n전국 경찰서 및 관공서와 연계됩니다."
private const val DRAWABLE = R.drawable.safety_dream
}
}
gradle command
./gradlew clean JacocoTestReport
Reference
この問題について(Code Coverage), 我々は、より多くの情報をここで見つけました https://velog.io/@larvatus/Code-Coverageテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol