Вопрос по unit-tests
От: strannik747  
Дата: 31.05.12 07:23
Оценка:
Имеется такой код (Java):

class ClassName {
    
    private int _field1;
    ...

    ClassName(int f1) {
        _field1 = f1;   
    }
    
    int calcSomething(int cnt) {
        return Utils.trunc(cnt * _field1 / 100 + 1);
    }
}



Какой unit-test имеет смысл писать для метода calcSomething(), если мы хотим проверить нормальное расчетное поведение, а не граничные случаи?

1) res[] расчитаны вручную по формуле, но непонятно, что они означают

@Test 
void calcSomething() {
    final int INIT_VAL = 1234;
    ClassName obj = new ClassName(INIT_VAL);
    int[] cnt = {0, 1, 3, 17, 1024};
    int[] res = {1, 13, 38, 210, 12637}; 
    for (int i=0; i < cnt.length; ++i) {
        assertThat(obj.calcSomething(cnt[i]), is(res[i]));
    }
}



2) Показана формула расчета, но это полное дублирование кода метода!
@Test 
void calcSomething() {
    final int INIT_VAL = 1234;
    ClassName obj = new ClassName(INIT_VAL);
    int[] cnt = {0, 1, 3, 17, 1024};
    for (int i=0; i < cnt.length; ++i) {
        assertThat(obj.calcSomething(cnt[i]), 
            is(Utils.trunc(cnt[i] * INIT_VAL / 100 + 1)));
    }
}
unit test java
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.