Я обычно обеспечивают тест «крючки», используя этот шаблон
public class MyObject {
public void doStuff() {
// stuff to do
onCompleteStuff();
}
protected void onCompleteStuff() {
}
}
Затем в тестовом коде вы можете создать подкласс MyObject
, что делает ваш тест-только действия:
private MyObject newMyObject() {
return new MyObject() {
@Override
protected void onCompleteStuff() {
saveObjectAsJson();
}
};
}
Это имеет преимущество, заключающееся в том, что тестовый код не соответствует вашей основной сборке. Он также будет работать, если вы должны использовать макет в своих тестах. Например, используя отличную библиотеку Mockito:
MyObject foo=Mockito.spy(new MyObject());
doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
saveObjectToJson();
return null;
}
}).when(foo).onCompleteStuff();
Вы можете перенести тест равенства в свою собственную функцию, называемую «testingIsOn». Вам нужно быть более конкретным относительно того, что означает «менее дерьмовое». – Carcigenicate
@Carcigenicate: Менее дерьмово, потому что я должен добавить в свой код код для проверки теста:/ – Snorks
@SeniorJD Что вы назначаете? – Snorks