На ночь глядя взялся реализовать двусвязный список на Java. Пишу тест
@Test
public void testAddAtAtEnd() {
List<String> list = get();
list.add("1");
assertEquals("[1]", list.toString());
list.add("2");
assertEquals("[1, 2]", list.toString());
list.add("3");
assertEquals("[1, 2, 3]", list.toString());
list.add("4");
assertEquals("[1, 2, 3, 4]", list.toString());
}
Неуклюже и некрасиво! Хочу так!!
@Test
public void testAddAtAtEnd() {
List<String> list = get();
assertAfter("[1]", list).add("1");
assertAfter("[1, 2]", list).add("2");
assertAfter("[1, 2, 3]", list).add("3");
assertAfter("[1, 2, 3, 4]", list).add("4");
assertAfter("[1, 2, 3, 4, 5]", list).add("5");
assertAfter("[1, 2, 3, 4, 5, 6]", list).add("6");
assertAfter("[1, 2, 3, 4, 5, 6, 7]", list).add("7");
}
Для этого мне надо вот
private <T> T assertAfter(final String expected, final T object) {
return (T) Proxy.newProxyInstance(this.getClass().getClassLoader(),
object.getClass().getInterfaces(),
new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object invoke = method.invoke(object, args);
assertEquals(expected, object.toString());
return invoke;
}
});
}
Приятного!
Круто выглядит.
ОтветитьУдалитьСпасибо!