Should we do unit testing for default methods in interfaces (Java 8)?
我对Java 8中引入的接口中的默认方法实现感到有些困惑。我想知道我们是否应该专门为接口及其实现方法编写JUnit测试。我试着用谷歌搜索,但找不到一些指导方针。请告知。
它取决于方法的复杂性。如果代码很琐碎,则不必这样做,例如:
1 2 3 4 5 6 | public interface MyInterface { ObjectProperty<String> ageProperty(); default String getAge() { return ageProperty().getValue(); } } |
如果代码更复杂,那么您应该编写一个单元测试。例如,来自
1 2 3 4 5 6 7 8 9 10 11 | public interface Comparator<T> { ... default Comparator<T> thenComparing(Comparator<? super T> other) { Objects.requireNonNull(other); return (Comparator<T> & Serializable) (c1, c2) -> { int res = compare(c1, c2); return (res != 0) ? res : other.compare(c1, c2); }; } ... } |
如何测试?
从接口测试默认方法与测试抽象类相同。
这已经被回答了。