Frühling + Mockito test Injektion

Meine Frage ist sehr ähnlich der Frage in Die Injektion Mockito mocks in eine Spring-bean. In der Tat, ich glaube, dass die akzeptierte Antwort, es könnte tatsächlich für mich arbeiten. Allerdings habe ich ein Problem mit der Antwort, und dann eine weitere Erklärung, falls die Antwort gibt es in der Tat nicht meine Antwort.

Also folgte ich dem link in der oben genannten post an die Springockito website. Ich veränderte meine test-config.xml etwas ähnlich dem folgenden:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mockito="http://www.mockito.org/spring/mockito"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.mockito.org/spring/mockito http://www.mockito.org/spring/mockito.xsd">

...

    <mockito:mock id="accountService" class="org.kubek2k.account.DefaultAccountService" />
...
</beans>

Scheint es etwas falsch mit der www.mockito.org redirect derzeit, so fand ich die XSD-code https://bitbucket.org/kubek2k/springockito/raw/16143b32095b/src/main/resources/spring/mockito.xsd und verändert Sie den letzten Eintrag in der xsi:schemaLocation diese bitbucket link.

Läuft mvn test dann erzeugt der folgende Fehler (Zeilenumbrüche Hinzugefügt, um die Lesbarkeit zu verbessern):

Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
    Line 43 in XML document from class path resource [spring/test-context.xml] is invalid;
    nested exception is org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 91;
    The prefix "mockito" for element "mockito:mock" is not bound.

Also die Frage, Springockito ist: Ist es überhaupt noch möglich, diese aufzunehmen? Was bin ich?

Nun, auf zur weiteren Erklärung...

Habe ich eine Schnittstelle, deren Implementierung, die ich bin versucht zu testen:

public interface MobileService {
    public Login login(Login login);
    public User getUser(String accessCode, Date birthDate);
}

Die Umsetzung enthält ein DAO-Spring @Autowires in mir:

@Service
public class MobileServiceImpl implements MobileService {
    private MobileDao mobileDao;

    @Autowired
    public void setMobileDao(MobileDao mobileDao) {
        this.mobileDao = mobileDao;
    }
}

Möchte ich nicht ändern, meine Oberfläche um eine setMobileDao Methode, denn das wäre das hinzufügen von code, um meine unit-Tests. Ich versuche zu verspotten, aus dem DAO, da das eigentliche SUT hier ist die ServiceImpl. Wie kann ich das erreichen?

InformationsquelleAutor Mike | 2011-10-18
Schreibe einen Kommentar