Согласно Misko Hevery, который имеет блог с возможностью тестирования. Разработчикам следует избегать объектов «держатель», «контекст» и «кухонная раковина» (они берут всевозможные другие объекты и являются сумкой для коллабораторов). Перейдите в конкретный объект, который вам нужен в качестве параметра, вместо владельца этого объекта.Тестируемый Java-код: использование фасоли модели с конструктором
В примере удар, этот код запах? Должен ли я передавать только те параметры, которые необходимы, или модель/компонент, с данными, которые мне нужны.
Например, вы бы сделали следующее: Примечание. Вероятно, я мог бы передать данные в качестве аргументов конструктора. Это запах кода?
public Parser {
private final SourceCodeBean source;
public Parser(final SourceCodeBean s) {
this.source = s;
}
public void parse() {
// Only access the source field
this.source.getFilename();
...
... assume that the classes uses fields from this.source
...
}
}
public SourceCodeBean {
private String filename;
private String developer;
private String lines;
private String format;
...
...
<ONLY SETTERS AND GETTERS>
...
}
...
Or
public Parser {
public Parser(String filename, String developer, String lines ...) {
...
}
}
And building a test case
public void test() {
SourceCodeBean bean = new SourceCodeBean():
bean.setFilename();
new Parser().parse();
}
Другой вопрос: при написании проверяемого кода вы склонны писать TOO многих классов. Неправильно ли иметь слишком много классов или один класс со слишком многими методами. Классы полезны и имеют одну цель. Но я мог видеть, где они могут быть реорганизованы в один более крупный класс ... но этот класс будет иметь несколько целей.
Почему для второго анализатора требуется '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''? – notnoop
Просто псевдо пример, я не выписал весь код (потому что не существует всего кода).Предположим, что используются строки разработчика и, возможно, 10 других членов. –