Как мы знаем, PowerMockito может подготовить для теста только один финал, статический или частный класс, как следующее:Как издеваются несколько статических классов по PowerMockito
@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClassNumber1.class)
public class SomeClassUnderTest{
@Before
public void setUp() throws Exception {
}
@Test
public void testSomeMethod() throws Exception {
}
}
Но метод, который я буду тест использует более одного статические классы. Вещь, которую я хочу сделать, выглядит так:
@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClassNumber1.class, SomeClassNumber2.class)
public class SomeClassUnderTest{
Но @PrepareForTest имеет только один аргумент.
Редактировать: Например, метод будет использовать одноэлементные, заводские или некоторые статические методы разных классов.
public class SomeClass {
private Session session;
private Object object;
public void someMethod(int userId) {
Session session = Session.getSession(userId);
Object object = Singleton.getInstance();
}
}
Примечание: Эта проблема может быть решена с помощью единого принципа ответственности. например вместо того, чтобы использовать синглтон внутри метода, который собирается быть испытано, я могу извлечь его другим способом, как следующий, и издеваться над его:
public class SomeClass {
private Session session;
private Object object;
public void someMethod(int userId) {
session = getSession(userId);
object = getInstance();
}
private getSession(userId) {
return Session.getSession(userId);
}
private Object getInstance(){
return Singleton.getInstance();
}
}
Но это тоже не кажется хорошим решением для меня. Лучше, если PowerMockito или другие инструменты тестирования имеют функцию, которая может одновременно издеваться над несколькими статическими классами.
О, я забыл о фигурных скобках.)) Большое спасибо. – Vanguard