2016-04-26 4 views
1

Пришло время написать мой первый тест. Я был очень удивлен, но я застрял. У меня есть метод, который должен проверить установленную версию JavaTestNG: метод тестирования без аргументов

public static boolean verifyJavaVersion() throws UserException { 
    if (System.getProperty("java.version") != null) { 
     String[] javaProperty = System.getProperty("java.version").substring(2, System.getProperty("java.version").length()).split("\\."); 
     int installedJavaVersion = Integer.parseInt(javaProperty[0]); 
     int installedJavaReleaseVersion = Integer.parseInt(javaProperty[1].substring(2, javaProperty[1].length())); 
     if (installedJavaVersion != REQUIRED_JAVA_VERSION || installedJavaReleaseVersion < MINIMUM_JAVA_RELEASE_VERSION) 
      throw new UserException("Java version is not correct. Required Java version " 
        + REQUIRED_JAVA_VERSION + ", release " + MINIMUM_JAVA_RELEASE_VERSION + " or higher"); 
     return true; 
    } 
    throw new UserException("Java version not found"); 
} 

У меня есть 2 переменные там, оба из них не являются private static final, так, как вы видите, никаких аргументов в этом методе. Как я могу проверить этот метод, и должен ли я проверить что-либо, ожидая изменения этих двух переменных?

У меня есть идея создать публичные геттеры и сеттеры для тестирования этих переменных, но является ли это хорошей практикой?

ответ

3

Понимая, что написать тест сложно, часто означает, что код можно улучшить. И для меня это одна из самых больших причин для написания тестов: они заставляют вас писать лучший код!

Если вы посмотрите на ваш код, он на самом деле делает несколько вещей:

  • Он получает свойство версии системы, возможно, бросать исключение
  • извлекает две версии и преобразует в целые
  • Затем он сравнивает их

При рассмотрении этого вопроса вы видите, что это можно разделить на несколько функций. И они могут быть протестированы более легко.

public static boolean verifyJavaVersion() throws UserException { 
    String javaVersion = ... 
    int installedJavaVersion = extractJavaVersion(javaVersion); 
    int installedJavaReleaseVersion = extractJavaReleaseVersion(javaVersion); 
    checkVersion(installedJavaVersion, REQUIRED_JAVA_VERSION, installedJavaReleaseVersion, MINIMUM_JAVA_RELEASE_VERSION); 
} 

каждый из них должен быть прост в проверке.

Я удалил нулевой чек для простоты, но вы видите идею.

+0

большое спасибо! – quento

Смежные вопросы