Я пишу некоторые тесты JUnit для устаревшего кода, и я большой поклонник использования аннотаций. Я хотел бы знать, можно ли создать объявление для объекта spied, а затем создать его экземпляр. Причина, по которой я спрашиваю, состоит в том, что у меня есть класс с конструктором с ненулевым значением. Значения для этого конструктора неизвестны только после установки тестовых примеров. Приведенный ниже код показывает, что я хотел бы сделать:Можно ли объявить, но не проинсталлировать Spied Object в Mockito, используя нотацию @Spy?
@RunWith(MockitoJUnitRunner.class)
public class ObjectUndertestTest {
@Spy private SomeClassToSpy someClassToSpy;
private Integer parameterOne;
private Integer parameterTwo;
@Before
public void setupTest() {
parameterOne = 1;
parameterTwo = 2;
someClassToSpy = new SomeClassToSpy(parameterOne, parameterTwo);
}
}
Единственный способ, который я могу видеть, чтобы быть в состоянии сделать это, чтобы смешивать мой синтаксис и использовать традиционный шпион (объект в макете) нотации. То есть:
@RunWith(MockitoJUnitRunner.class)
public class ObjectUndertestTest {
private SomeClassToSpy someClassToSpy;
private Integer parameterOne;
private Integer parameterTwo;
@Before
public void setupTest() {
parameterOne = 1;
parameterTwo = 2;
someClassToSpy = new SomeClassToSpy(parameterOne, parameterTwo);
SomeClassToSpy spySomeClassToSpy spy(someClassToSpy);
}
}
Или что-то подобное. Любые мысли по этому поводу?
К сожалению, я хотел бы сделать ссылку на тип объекта, не создавая его до тех пор, пока не смогу проверить несколько входов. Это дает доступ к объекту в любом другом случае. После обширной игры, я обнаружил, что это невозможно сделать с аннотациями. Это требует реальной ссылки на объект, а затем с использованием ссылки spy (someClass). С абстрактным классом это было еще сложнее, но отлично работает в Mockito 1.10 –