Для этого потребуется изменить код метода, чтобы вставить вызовы в другие методы. Отражение Java позволяет вам многое, но не позволяет динамически изменять код метода.
То, что делает JUnit, отличается. Он идентифицирует каждый метод, аннотированный @Before
, @Test
и @After
, а затем делает что-то вроде:
for (Method t : testMethods) {
for (Method b : beforeMethods)
b.invoke();
t.invoke();
for (Method a : afterMethods)
a.invoke();
}
Вы, безусловно, можете сделать что-то подобное, чтобы убедиться, что вы вызываете методы «до» и «после» после каждого раза , вы вызываете соответствующий метод. Но вы не можете заставить всех абонентов сделать то же самое.