Моя установка Eclipse не смогла найти log4j.properties
при запуске тестов JUnit из Eclipse, хотя файл был расположен в src/test/resources
.
Причина в том, что Eclipse ( или соединитель m2e ) не копировал содержимое из src/test/resources
в ожидаемую выходную папку target/test-classes
- основная причина заключалась в том, что в свойствах проекта в Java Build Path - > вкладка Источник -> Исходные папки на пути сборки -> src / test / resources , так или иначе появилась запись Excluded: **
. Я удалил эту запись excluded .
В качестве альтернативы я мог бы вручную скопировать src/test/resources/log4j.properties
в target/test-classes/log4j.properties
.
Правило жалуется, потому что для получения (расширение) класс возможно полностью заменить функциональность, которую Вы обеспечили, не говоря Вам об этом. Это - верный признак, что Вы не полностью рассмотрели, как тип мог бы быть расширен. Что это хочет, чтобы Вы сделали, вместо этого что-то вроде этого:
public abstract class Plant {
private String roots;
private String trunk;
// setters go here
private void validate() {
if (roots == null) throw new IllegalArgumentException("No roots!");
if (trunk == null) throw new IllegalArgumentException("No trunk!");
validateEx();
}
protected void validateEx() { }
public abstract void grow();
}
Примечание, что теперь кто-то может все еще предоставить их собственный код доступа, но они не могут заменить Ваш предзаписанный код. В зависимости от того, как Вы означали использовать validate
метод, Вы могли также сделать его общедоступным финалом вместо этого.