SORU
23 Aralık 2010, PERŞEMBE


Nasıl özel bir kurucu test kapsama eklemek için?

Bu kod

package com.XXX;
public final class Foo {
  private Foo() {
    // intentionally empty
  }
  public static int bar() {
    return 1;
  }
}

Bu testi

package com.XXX;
public FooTest {
  @Test 
  void testValidatesThatBarWorks() {
    int result = Foo.bar();
    assertEquals(1, result);
  }
  @Test(expected = java.lang.IllegalAccessException.class)
  void testValidatesThatClassFooIsNotInstantiable() {
    Class cls = Class.forName("com.XXX.Foo");
    cls.newInstance(); // exception here
  }
}

İyi çalışıyor, sınıf ve test edilmiştir. Ama Cobertura sınıfın kurucu sıfır kod kapsama olduğunu söylüyor. Böyle özel bir kurucu için test kapsamı ekleyebilir miyiz?

CEVAP
8 ŞUBAT 2011, Salı


Tamamen Jon Skeet katılmıyorum. Eğer kolay bir galibiyet kapsama vermek ve kapsama rapor gürültü ortadan kaldırmak için alabilirsiniz eğer, o zaman yapmalısın bence. Ya da kapsama aracı kurucu görmezden söyle, ya da idealizmi bir kenara bırakıp, Aşağıdaki test yazmak ve onunla yapılabilir:

@Test
public void testConstructorIsPrivate() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
  Constructor<Foo> constructor = Foo.class.getDeclaredConstructor();
  assertTrue(Modifier.isPrivate(constructor.getModifiers()));
  constructor.setAccessible(true);
  constructor.newInstance();
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • majesticdubstep

    majesticdubs

    3 Kasım 2011
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013