2013-04-23 5 views
0

Я изучаю разработку, основанную на тестах, и я хочу знать, что я должен делать, когда дело доходит до проверки валидации. Должен ли я создавать модульные тесты, которые проверяют каждую возможную комбинацию результатов проверки? Это кажется практически невозможным при работе с крупными объектами. Скажем, у меня есть модель лица с большим количеством атрибутов, некоторые с ограничениями, а именно -Должен ли я использовать код проверки работоспособности? Кажется непрактичным

@entity 
public class MyClass extends Model { 

    @Constraints.Required 
    @Constraints.MaxLength(20) 
    public String attribute1; 

    @Constraints.Required 
    public String attribute2; 

    public float attribute3; 

    @Constraints.Required 
    public String attribute4; 

    @Constraints.Required 
    public String attribute5; 

    @Constraints.Max(100) 
    public int attribute6; 

    @Constraints.Required 
    public String attribute7; 

    ... 
    ... 
    ... 
} 

Так я буду писать модульные тесты для проверки такого лица или это бессмысленно? Я могу запустить его через функцию Validator и получить количество неудачных проверок ... но если я буду строго разбираться в тестировании, я не должен делать это для всех возможных комбинаций недопустимых атрибутов, что повлечет за собой создание огромной суммы экземпляров для тестирования.

В этом случае это определенно кажется бессмысленным, и разве это не означает, что модульные тесты бессмысленны для любой проверки подлинности объекта? То есть если они бессмысленны для объекта с большим количеством атрибутов, они также должны быть бессмысленными для атрибута с несколькими атрибутами?

ответ

1

Я бы тестировал, а не с любой возможной комбинацией, но каждое ограничение атрибута. Поэтому создайте действительную запись, убедитесь, что нет сбоев. Измените одну вещь из этой записи таким образом, чтобы нарушить определенное ограничение; убедитесь, что это ограничение уловляет его. Повторяйте с каждым ограничением. Теперь вы знаете, что все ограничения работают.

+0

Другими словами, напишите один тест каждый, чтобы выполнить каждую ветвь кода, и включите тест для каждого исключения, которое может вызвать ваш код. На практике я обнаружил, что не каждый разработчик полностью тестирует чистый объект данных, подобный этому. Это зависит от того, хотите ли вы выразить требование с точки зрения теста. Речь идет о предпочтениях. –

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

  • Нет связанных вопросов^_^