что является подходящим способом для написания JunitTestCases для этого метода - PullRequest
1 голос
/ 08 ноября 2011

Код ниже - это логика моего метода.

pulic String getData()
{ 
if (leg.length == 4)
      return "ATE";
  else  if (leg.length == 2) {
      return "FTE";
      }
    if (leg.length == 3) {
      if (xr1.KotilaType.equals("CST")) {
        return "HTE";
      }
      return "DTE";
    }
   return "BTE";
  }

Как мне приказано, мне нужно начать писать тестовые примеры Junit для этого метода.

Как видите, внутри этого метода есть только один метод и несколько условий.

Теперь мой вопрос Нужно ли нам писать отдельный тестовый случай Junit (отдельный метод) для каждого условия ??

Или будет достаточно написать только один Junit TestCase и охватить все вышеперечисленные условия ??

Я новичок в junit и не эксперт, пожалуйста, подскажите, как найти подходящий способ написания JunitTestCases для вышеуказанного метода ??

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Это вопрос стиля. Это две альтернативы: Со всеми в одном методе:

public void testAll() {
    assertEquals("ATE", getData(leg4));
    assertEquals("FTE", getData(leg2));
    // etc.
}

С одним методом / комбинацией испытаний:

public void testLength4() {
    assertEquals("ATE", getData(leg4));
}

public void testLength2() {
    assertEquals("FTE", getData(leg2));
}

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

Последнее имеет то преимущество, что у вас есть один тест на комбинацию, поэтому очень легко локализовать проблему, потому что (теоретически) только один тест провалится. Недостаток: у вас очень быстро заканчиваются названия для методов тестирования. testLength4, testLength2, testLength3WithCST, testLength3WithCST. Этот недостаток становится особенно серьезным, когда у вас много комбинаций (например, один тест на каждый месяц в году).

Большую часть времени я использую один метод тестирования / контрольный пример, но если число комбинаций начинает расти, у меня будет один метод. Он содержит все комбинации, потому что мне нравится видеть все свои комбинации одновременно, чтобы увидеть, пропустил ли я их.

0 голосов
/ 08 ноября 2011

Я бы начал с пяти модульных тестов для каждого возможного возвращаемого значения, установив объект в состоянии теста (leg.length & xr1.KotilaType) на соответствующие значения в каждом тесте.

Затем я перейду к тестам, которые охватывают граничные значения, например. длина ноги == 5, 1 и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...