Мне нужно сделать некоторые тесты jUnit для некоторых методов, и я не могу изменить исходный код. Есть ли возможность изменить поведение функции без изменения исходного кода? Посмотрите прямолинейный пример: Class A и B являются исходным кодом (не могут их изменить). Я хочу изменить поведение метода run() из A, когда я вызываю его в B через тестирование() в тесте Junit. Есть идеи?jUnit изменить поведение метода
public class A {
public String run(){
return "test";
}
}
public class B {
public void testing() {
String fromA = new A().run(); //I want a mocked result here
System.out.println(fromA);
}
}
public class C {
@Test
public void jUnitTest() {
new B().testing();
// And here i want to call testing method from B but with a "mock return" from run()
}
}
модульные тесты должны проверить свои методы, чтобы не изменить то, что они (как предполагается) сделать. Вы можете их высмеять. Посмотри Мокито. Это инструмент, который поможет вам высмеять результаты. – Stultuske
Как бы вы использовали макет в этом случае? Без издевательского метода тестирования? –
использовать javaassist для изменения поведения класса или методов, это библиотека манипулирования байтов. –