Cobertura,Enums和Switch声明

时间:2012-12-11 11:55:13

标签: java junit enums switch-statement cobertura

在我们公司,我们的代码覆盖率要求为90%。

运行Cobertura报告,我只获得88.8%的覆盖率,我看到以下切换语句突出显示:

public TopBrandPrefix getPrefix() {
     switch(brandParamType) {
         case TOP12SUCHAS_AND:
             return TopBrandPrefix.SUCHAS;
         case TOP12COMME_ET:
             return TopBrandPrefix.COMME;
         case TOP12WIE_UND:
             return TopBrandPrefix.WIE;
         default:
             return TopBrandPrefix.NULL;
     }
 }

报告80%的报道。 brandParamType具有以下枚举类型:

public enum BrandParamType {

    TOP123,
    TOP456,
    TOP123LINKED,
    TOP456LINKED,
    TOP12,
    TOP12AND,
    TOP12SUCHAS_AND,
    TOP12COMME_ET,
    TOP12WIE_UND
}

在我的单元测试中,我使用这些值调用getPrefix,那么为什么我没有获得100%的分支覆盖?

我正在运行的单元测试如下:

@Test
public void testGetPrefixWithTOP123() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP123);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP456() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP456);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP123LINKED() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP123LINKED);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP456LINKED() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP456LINKED);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP12() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP12);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP12AND() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP12AND);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.NULL, prefix);
}

@Test
public void testGetPrefixWithTOP12SUCH_AS() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP12SUCHAS_AND);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.SUCHAS, prefix);
}

@Test
public void testGetPrefixWithTOP12COMME_ET() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP12COMME_ET);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.COMME, prefix);
}

@Test
public void testGetPrefixWithTOP12WIE_UND() {
    TopBrandTouchpointParameterSource source = new TopBrandTouchpointParameterSource(urlComposer, TouchpointParameterHelper.BrandParamType.TOP12WIE_UND);
    TopBrandTouchpointParameterSource.TopBrandPrefix prefix = source.getPrefix();
    assertEquals(TopBrandTouchpointParameterSource.TopBrandPrefix.WIE, prefix);
}

1 个答案:

答案 0 :(得分:1)

运行非常相似的测试我看到100%的覆盖率。但是,在代码更改但没有mvn cobertura:cobertura后运行clean时,我收到了部分分支覆盖率的报告。尝试删除您的Cobertura州。