Eclipse,Jacoco在gradle配置时的注意事项

gradle文件:

apply plugin: 'java'
apply plugin: 'jacoco'

dependencies {
    	compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'
        // .... 此处省略其它依赖
        
        testCompile group: 'junit', name: 'junit', version: '4.12'
        testCompile group: 'org.powermock', name: 'powermock-api-mockito', version: '1.6.5'
        testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.6.5'
}

//Set up the Java build
sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
        resources {
            srcDirs = ['src/main/java']
        }
    }

    test {
        java {
            srcDirs = ['src/main/java', 'src/test/java']
        }
        resources {
            srcDirs = ['src/test/java']
        }
    }
}

jacoco {
	toolVersion = "0.7.6.201602180812"
}

test {
	jacoco {
		append = false
	}
}

jacocoTestReport {
	group = "Reporting"
	dependsOn test
	afterEvaluate {
		classDirectories = files(classDirectories.files.collect {
			fileTree(dir: it,
					exclude: [
					'com/ibm/marketplace/checkout/database/*'
					])
		})
	}
	reports {
		xml.enabled false
		csv.enabled false
		html.enabled true
		html.destination "${buildDir}/reports/coverage/java"
	}
}

evaluationDependsOnChildren()

// create a fat jar
jar {
	dependsOn jacocoTestReport
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

1)其中注意:sourceSets指定的是使用gradle build时build的代码路径,可以在其中分别指定业务java代码和其资源、还可以指定测试类代码路径和其资源

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
        resources {
            srcDirs = ['src/main/java']
        }
    }

    test {
        java {
            srcDirs = ['src/main/java', 'src/test/java']
        }
        resources {
            srcDirs = ['src/test/java']
        }
    }
}


2) 其中所指定的路径,应该是在eclipse上选中项目名然后通过 new -> Source Folder创建的,创建如src/test/java,应该是必须做new->Source Folder,然后再输入“src/test/java”,这3个目录中任何一个都不能通过其它方式(比如new -> folder)创建。

注意:如果如下的src/main/java是通过new -> Source Folder->创建src/main,再通过new->Package创建其下的java的话

那么test下的,src/test也要通过new-> Source Folder创建,而src/test/下的java只能通过new-> Package创建,也就是main下的和test下的目录对应的层次和创建方式要保持一致,否则可能会出问题,不能正常执行写好的UT

    main {
        java {
            srcDirs = ['src/main/java']
        }
        resources {
            srcDirs = ['src/main/java']
        }
    }

3)jacocoTestReport下配置的exclude: ['com/ibm/marketplace/checkout/database/*'] 批的是代码覆盖率统计结果是对去掉对这个database包下的代码后进行的统计数据

4)其中除了sourceSets是从项目下的目录开始写相对路径之外,其中路径都是写的在sourceSets中配置后剩下的路径

如exclude: ['com/ibm/marketplace/checkout/database/*'],指的是src/main/java/com/ibm/marketplace/checkout/database/* 这个包,因为src/main/java已经在sourceSets中指定,所以就在exclude中写剩下的相对路径了

5)如下指的是通过gradle创建一个jar包, 其中jacocoTestReport指的是上面配置好的jacocoTestReport代码块,如果不通过dependsOn进行调用,则不会执行这个代码块,也就不会生成代码覆盖率统计报告文件

// create a fat jar
jar {
    dependsOn jacocoTestReport
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

6)如下是,指定生成报告的文件类型和文件位置

	reports {
		xml.enabled false
		csv.enabled false
		html.enabled true
		html.destination "${buildDir}/reports/coverage/java"
	}

html.enabled true表示支持将报告生成html文件,然后存放到项目的build目录下的reports/coverage/java目录下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章