Ich teste eine Methode mit JUnit
API und ich möchte den Wert einer lokalen Variablen testen, damit ich eine bessere Zweigabdeckung erhalten. In der zu testenden Methode widgets
ist eine Variable vom Typ List
und während der Fehlersuche fand ich heraus, dass es nicht null ist. Ich möchte es für Null
testen, aber ich bin nicht sicher, wie man seinen Wert ändert?So testen Sie eine lokale Variable in JUnit zur Verbesserung der Codeabdeckung
Methode im Test:
public boolean preProcess(ServiceContext ctx) throws ProcessorException {
logMethodStartDebug(ctx, CLASS_NAME, "preProcess(ServiceContext, Object)");
try {
if(Constants.YES.equalsIgnoreCase(EISSpringUtil.getMessage(ENABLE_SELF_HEALING_FLAG))) {
if(AppContext.getApplicationContext().containsBean(ISO + AGGREGATOR_HEALTH_PREFIX)) {
IMonitoringWidgetAggregator aggregator = (IMonitoringWidgetAggregator)AppContext.getBean(ISO + AGGREGATOR_HEALTH_PREFIX);
List<MonitoringWidget> widgets = aggregator.aggregate();
if(widgets != null && widgets.size() > 0) {
for(MonitoringWidget mw : widgets) {
if(mw.getStatus().equals(MonitoringStatus.FAIL)) {
ctx.addMessage(ErrorMessageUtil.generateMessage(getMessageFactory(), ErrorCodeConstants.STATUS_6000, new Object[] { ctx.getSystemName(), mw.getMonitoringCode()}));
return false;
}
}
}
}
}
return true;
} finally {
logMethodEndDebug(ctx, CLASS_NAME, "preProcess(ServiceContext, Object)");
}
}
JUnit-Testfall für positives Szenario
@Test
public void testPreProcess() throws Exception {
AppContext.setApplicationContext(applicationContext);
ServiceContext ctx = new ServiceContext();
boolean b = preProcess(ctx);
assertFalse(b);
assertNotNull(ctx);
assertNotNull(ctx.getMessages());
assertNotNull(ctx.getMessages().get(0));
assertEquals("code:6000", ctx.getMessages().get(0) .getMessageCode());
}
Vielen Dank im Voraus
Ich sehe "Pfeilcode" hier. Behebt das zuerst - es ist zu früh, um sich Sorgen um die kleinen Implementierungsdetails zu machen, dass "Widgets" null sein könnten. Siehe http://blog.codinghorror.com/flattening-arrow-code/ – unigeek
Mögliches Duplikat von [Wie testet man eine Klasse mit privaten Methoden, Feldern oder inneren Klassen?] (Http://stackoverflow.com/questions/34571/how-to-Test-eine-Klasse-das-hat-private-Methoden-Felder-oder-innere-Klassen) – Raedwald