小编sk_*_*dev的帖子

使用kotlin和jmockit

我需要一些使用jmockit和kotlin的建议.

(CUT)这是我测试的(Java)类:

public final class NutritionalConsultant {
    public static boolean isLunchTime() {
        int hour = LocalDateTime.now().getHour();
        return hour >= 12 && hour <= 14;
    }
}
Run Code Online (Sandbox Code Playgroud)

(j.1)这是一个有效的Java测试类

@RunWith(JMockit.class)
public class NutritionalConsultantTest {
    @Test
    public void shouldReturnTrueFor12h(@Mocked final LocalDateTime dateTime) {
        new Expectations() {{
            LocalDateTime.now(); result = dateTime;
            dateTime.getHour(); result = 12;
        }};
        boolean isLunchTime = NutritionalConsultant.isLunchTime();
        assertThat(isLunchTime, is(true));
    }
}
Run Code Online (Sandbox Code Playgroud)

(kt.1)但是,相应的kotlin类会引发异常

RunWith(javaClass<JMockit>())
public class NutritionalConsultantKt1Test {

    Test
    public fun shouldReturnTrueFor12h(Mocked dateTime : LocalDateTime) {
        object : Expectations() {{
            LocalDateTime.now(); result …
Run Code Online (Sandbox Code Playgroud)

junit jmockit kotlin

8
推荐指数
1
解决办法
1485
查看次数

SonarQube:与JaCoCo的多模块gradle项目的覆盖范围不完整

我正在构建一个已经在分析我的Java 8/Gradle 3.3项目的SonarQube 6.2服务器.将JaCoCo添加到多模块gradle项目时,我意识到SonarQube正在"按模块"测量代码覆盖率:

如果一个类位于模块中A并且该类的测试位于模块中B,则SonarQube会指出该类未被覆盖.

我想测量所有模块的代码覆盖率,而不是基于每个模块.我该如何实现这一目标?

有很多类似的问题,但没有有用的答案,虽然这种情况对我来说似乎很常见.例如Jenkins默认情况下这样做.

我决定在github上构建一个蓝图来澄清这个问题.

主要build.gradle包括

plugins { id "org.sonarqube" version "2.2.1" }

subprojects {
    apply plugin: 'java'
    apply plugin: 'jacoco'

    repositories { mavenCentral() }
    dependencies { testCompile "junit:junit:4.12" }
}
Run Code Online (Sandbox Code Playgroud)

modA/build.gradle是空的.

它包括3类:TestedInModA,TestedInModATestTestedViaModB.

modB/build.gradle只是声明一个依赖modA:

dependencies { compile project(':modA') }
Run Code Online (Sandbox Code Playgroud)

它只包含一个类:TestedViaModBTest,测试TestedViaModB位于的类modA.

我的(私有)Jenkins实例显示了包括的两个类的100%覆盖率,而SonarQube说只有类TestedInModA(在其自己的模块中测试)被覆盖.

如何修改构建过程以查看SonarQube中的"跨模块覆盖"?

我很想更新我的项目,以便将来访问此问题的访问者可以找到一个有效的例子.

我的工作解决方案(感谢@Godin)

  1. 将以下内容添加到subprojects闭包中 …

gradle jacoco sonarqube

7
推荐指数
1
解决办法
2785
查看次数

标签 统计

gradle ×1

jacoco ×1

jmockit ×1

junit ×1

kotlin ×1

sonarqube ×1