2014-12-29 5 views
0
//DOC Datatype Constants 
public enum DocDatatype { 

    PROFILE("Profile"), 

    SUPPORT_DETAIL("SupportDetail"), 

    MISC_PAGE("MiscPage"), 

String name; 

    DocDatatype(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    // the identifierMethod 
    public String toString() { 
     return name; 
    } 

    // the valueOfMethod 
    public static DocDatatype fromString(String value) { 
     for (DocDatatype type : DocDatatype.values()) { 
      if (type.getName().equals(value)) 
       return type; 
     } 

     throw new java.lang.IllegalArgumentException(value 
       + " is Not valid dmDataType"); 
    } 
} 

Я написал тестовый пример junit таким образом. Правильно ли это писать или неправильно?Junit тестирование для класса со строками

public class DocDatatypeTest { 

    private static final Log logger = LogFactory 
      .getLog(TreeConstantTest.class); 

    @Test 
    public void testDocDatatypeFromName() 
    { 
     DocDatatype d= DocDatatype.fromString("Profile"); 

     assertTrue((d.toString().compareToIgnoreCase("PROFILE") == 0)); 

    } 

    @Test 
    public void testDocDatatypeFromName1() 
    { 
     DocDatatype d = DocDatatype.fromString("SupportDetail"); 
     assertTrue((d.toString().compareToIgnoreCase("SUPPORT_DETAIL") == 0)); 
    } 

    } 
} 

ответ

0

Несколько вещей здесь:

  • Удалить регистратор из теста. Тест должен пройти или провалиться, нет необходимости в регистрации
  • Не используйте для этого assertTrue. Если тест не удастся, он не даст вам никакой информации о/why/it failed.

меняю бы это

@Test 
public void testDocDatatypeFromName() 
{ 
    DocDatatype actualDocType = DocDatatype.fromString("Profile"); 
    assertSame(DocDataType.PROFILE, actualDocType); 
} 

Если вы действительно хотите, чтобы утверждать, что значение ToString, то сделать это

@Test 
public void testDocDatatypeFromName() 
{ 
    DocDatatype d= DocDatatype.fromString("Profile"); 
    assertEquals("Profile", d.toString()); 
} 
  • Вы недостающую тесты для того, когда поиск ничего не соответствует
  • Я бы даже не написал эти тесты, поскольку вижу, что они не добавляют никакой ценности. Код, который использует, перечисления должны иметь тесты, а не эти.
  • Ваши тесты названы очень плохо. Не нужно начинать тест с test, и тот факт, что вы добавите «1» к концу второго теста, должен вам что-то сказать. Имена тестов должны быть сосредоточены на действиях и Поведение. Если вы хотите больше узнать об этом, получите декабрьский номер JAX Magazine, в котором есть фрагмент об именах из моей предстоящей книги о тестировании.
+0

@Test общественный недействительный testDocDatatypeFromName() { DocDatatype actualDocType = DocDatatype.fromString ("Профиль"); assertSame (DocDataType.PROFILE, actualDocType); } – harsha

+0

Показывает мне ошибку, поскольку DocDataType не может быть разрешен переменной – harsha

+0

Извините, должен быть DocDatatype, обратите внимание на заглавную – tddmonkey