Я не знаю много FindBugs , потому что я использую сонар. Для инструментов статического анализа кода я обычно считаю, что правила по умолчанию не всегда лучшие, поэтому я стараюсь их подстроить и обновить для нового шаблона разработки.
Во всяком случае для FindBugs, прибегая к помощи вокруг дали два возможных решения
Использование findbug аннотацию на каждом поле (FindBugs 3.0.0)
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="UR",
justification="This is an auto injected mock")
Или установить фильтр, чтобы игнорировать Mock
аннотацию ,
<Match>
<Bug code="UR">
<Field annotation="Mock">
</Match>
Обратите внимание, что оба эти псевдо-код, я пишу от смартфона. Таким образом, могут отсутствовать обязательные утверждения и/или правило (UR
) может быть неправильным, описание ошибки находится на веб-сайте findbug.
Эти идеи в основном пришли из:
- Is there a way to ignore a single FindBugs warning?
- http://www.scriptscoop2.com/t/0044ed425b4f/java-how-to-set-a-findbugs-filter-for-fields-with-a-specific-annotation.html
- http://findbugs.sourceforge.net/bugDescriptions.html
Я хотел бы указать на то, что путь Mockito используется в этом примере кажется неправильным. Вот моя рекомендация:
User
- это либо объект, либо объект ценности, я настоятельно рекомендую не издеваться над такими классами. Для этого я предпочитаю использовать строителей. Обычно я ремесло тест строителя, который может быть использован как тот UserBuilder.userWithId(73L).build()
- И, наконец, вместо того, чтобы издеваться
UserService
вернуть предварительно сконфигурированной пользователю BDDMockito.given(user_service_mock.getUser()).willReturn(preconfigured_user)