Например, мне нужно создать класс Vector, который может возвращать длину векторов.
Сначала я добавляю тест:
@Test
public void shouldReturnLengthOfVector() {
Vector3D vector = new Vector3D(4d, 2d, -4d);
assertThat(vector.length(), is(6d));
}
При написании теста создайте класс Vector3D и добавьте заглушку метода.
public double length() {
// TODO Auto-generated method stub
return 0;
}
Тест не пройден. Что такое простая вещь, чтобы пройти тест? Твердо закодированное значение:
public double length() {
return 6d;
}
Тест пройден. Теперь я добавляю метод, который проверяет «угловой регистр»:
@Test
public void someCornercaseShouldReturnLengthOfVector() {
Vector3D vector = new Vector3D(1d, -2d, -2d);
assertThat(vector.length(), is(3d));
}
Конечно, это не проходит. Я меняю свою реализацию:
public double length() {
return Math.sqrt(i * i + j * j + k * k);
}
Все зелено!
Как выбрать имена для методов, когда я следую принципу "простейшая вещь, которая может работать"? В этом примере метод someCornercaseShouldReturnLengthOfVector
и это не хорошее имя.