相关疑难解决方法(0)

使用Cobertura从代码覆盖中排除方法

有没有办法将代码排除在Cobertura覆盖率报告之外?我们有一些方法不应包含在覆盖率报告中,因此不会降低覆盖率数字.

我知道Clover有这样的功能,但我没有找到类似的Cobertura.

java code-coverage cobertura

53
推荐指数
3
解决办法
7万
查看次数

如何在Java应用程序中测试私有构造函数?

如果一个类包含一堆静态方法,为了确保没有人错误地初始化这个类的实例,我创建了一个私有构造函数:

private Utils() {
}
Run Code Online (Sandbox Code Playgroud)

现在..如果不能看到构造函数,怎么能测试呢?这可以覆盖测试吗?

java junit unit-testing

44
推荐指数
4
解决办法
3万
查看次数

Java最终抽象类

我有一个非常简单的问题:

我想要一个Java类,它提供了一个公共静态方法,它可以做一些事情.这仅用于封装目的(在一个单独的类中包含所有内容)...

这个类既不应该被实例化,也不应该被扩展.这让我写道:

final abstract class MyClass {
   static void myMethod() {
      ...
   }
   ... // More private methods and fields...
}
Run Code Online (Sandbox Code Playgroud)

(虽然我知道,这是禁止的).

我也知道,我可以使这个类完全是final,并覆盖标准构造函数,同时将其设为私有.

但在我看来,这更像是一种"解决方法",并且应该更有可能通过最终的抽象类来完成......

而且我讨厌变通方法.所以只是为了我自己的兴趣:还有另一种更好的方法吗?

java final class abstract

38
推荐指数
3
解决办法
3万
查看次数

声纳定义常数的方法

我使用Sonarqube 5.1并尝试使用"Sonar way"Java质量配置文件.工作很简单:我想为缺少的媒体类型定义一个全局 String常量:

public interface Utf8MediaType {
    String APPLICATION_JSON = "application/json;charset=UTF-8";
}
Run Code Online (Sandbox Code Playgroud)

然而,Sonarqube告诉我这在规则squid中是不好的做法:S1214 - 不应在接口中定义常量.长篇文章讨论了实现这个接口,我并不打算这样做,但我放弃并创建了一个类:

public class Utf8MediaType {
    public static final String APPLICATION_JSON = "application/json;charset=UTF-8";
}
Run Code Online (Sandbox Code Playgroud)

但是,这被认为是规则squid中的一个主要设计问题:S1118 - 实用程序类不应该有公共构造函数.所以它敦促我添加一个私有构造函数.当然,这个构造函数首先不要违反规则squid中的约定:S1213 - 接口声明或类的成员应该以预定义的顺序出现.我想在那之后我甚可能会得到common-java:InsufficientBranchCoverage,因为私有构造函数不在测试中.


这些是默认规则,我觉得它们组合起来有点傻.我有更多的例子,其中默认值对我们不起作用(缺少TestNG支持).我能做些什么呢?您有什么推荐的吗?

  • 让它成为一个类,添加一个私有构造函数,在单元测试中使用内省.使代码大十倍.对于String常量.
  • 创建例外列表.但是,为每个项目执行此操作可能会导致长列表,并邀请人们添加例外,即使是重要的事情.
  • 停用规则.现在,我宁愿使用默认的配置文件乱动,因为这可能意味着在Sonarqube升级了很多工作.
  • 创建一个继承默认值并覆盖事物的配置文件.事实证明,当您从配置文件继承时,您无法停用规则.您只能添加其他规则并更改规则配置(以降低其严重性).

java sonarqube

9
推荐指数
1
解决办法
5617
查看次数

在没有实例的情况下创建枚举有什么用?

我正在阅读并通过枚举实现场景.我想我们可以创建一个没有任何实例的枚举.这样的实际用途是Enum什么?其次Enum也可以实现一个接口,但显然不能扩展一个类,因为它已经扩展了类Enum.创建Enum没有实例的实际优势是什么?本

java

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

JaCoCo并错过了对私有默认构造函数的报道

我想看一个例子来阻止JaCoCo将私有空构造函数报告为Java类中的非覆盖代码.

在我的maven插件配置中

   <rule>
     <element>CLASS</element>
       <excludes>
         <exclude>JAVAC.SYNTHCLASS</exclude>
         <exclude>JAVAC.SYNTHMETH</exclude>
       </excludes>
     </element>
   </rule>
Run Code Online (Sandbox Code Playgroud)

是不是有类似的构造函数?

java code-coverage private-constructor jacoco-maven-plugin

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

如何在 sonarqube 中为最终类的私有构造函数提供测试覆盖率?

我有一个最终的 util 类,并且添加了一个私有构造函数来隐藏默认的公共构造函数。我如何通过 jacoco 覆盖率报告在 sonarqube 中获取此类的覆盖率并在 Jenkins 中构建?

public final class Util {

      // My contructor
      private Util() {
          super();
     }
 }
Run Code Online (Sandbox Code Playgroud)

java jenkins jacoco sonarqube

4
推荐指数
1
解决办法
4330
查看次数

私有构造函数junit/emma的覆盖范围

如何为私有构造函数编写@test类.我想用emma工具覆盖它.

public final class Product {

    private Product() {

    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以建议一个简单的方法?

谢谢.

java junit emma junit4

3
推荐指数
2
解决办法
3929
查看次数