Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

среда, 23 июня 2010 г.

JUnit хитрости: Параметризированный тест

Привет. Сегодня мне пришла идея как параметризирровать тест. для справки скажу, что я использую до сих пор 3.8. На эту идею, уверен, найдется множество критиков - супер! Напомню, что раньше в рубрике "JUnit хитрости" писал про тихие ассерты и ловлю исключений.

И так есть большой и довольно сложный тест. Допустим он проверяет какую-то сложную логику в случае использования ресурса типа А. Но у нас есть еще ресурсы типа B, C, D с идентичной логикой взаимодействия с окружающим миром. Что делать? Копипастить? Нееет уж :) Читаем дальше....

Вот он исходный тест
public void testCase1ForResourceA () {
     ...
     int resourceId = getService().getResource("A").getId();
     getService().assignResourceToSteram(streamId, resourceId);
     ...
     assertResource(resourceId, "qwe", "asd", 2, streamId);
     ...
     getService().processStream(streamId);
     List>Resource< resources = getService().getProcessedReqources("A");
     assertReaourceIn(resourceId, resources);
     ...     
}
Ну вот как-то так набредогенерил :) Допустим подобное поведение нам необходимо и для других ресурсов. Первое что приходит в голову это легким движением руки параметризировать тест
public void testCase1ForResource (String resourceType) {
     ...
     int resourceId = getService().getResource(resourceType).getId();
     getService().assignResourceToSteram(streamId, resourceId);
     ...
     assertResource(resourceId, "qwe", "asd", 2, streamId);
     ...
     getService().processStream(streamId);
     List>Resource< resources = getService().getProcessedReqources(resourceType);
     assertReaourceIn(resourceId, resources);
     ...     
}
И восользоваться новым чудом для реального тестирования
public void testCase1ForResources () {
    testCase1ForResources("A");
    testCase1ForResources("B");
    testCase1ForResources("C");
    testCase1ForResources("D");
}
Вот и все на сегодня.

Комментариев нет:

Отправить комментарий