JUnit-test cases für die Frühjahr-Service-Layer

Ich versuche zu konfigurieren, JUnit und schreiben von Testfällen für die Service-Schicht von Frühjahr 3.2 MVC-Anwendung. Ich konnte nicht finden viele Informationen zur Konfiguration der JUnit-von Grund auf neu und machen es Arbeit für die Frühjahr-service-layer. hier ist mein problem

Ich weiß wirklich nicht welche version von junit verwendet werden, so dass ich mir einfach die neueste version

Maven-junit-Abhängigkeit

 <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

Mein service Klasse

@Service
public class AuthService implements IAuthService, ApplicationContextAware,
        org.springframework.context.ApplicationListener<org.springframework.context.event.ContextRefreshedEvent> {

public Collection<? extends String> addCommandPermissions(Session session, CommandMetadata command) {

    Set<String> result = new HashSet<String>();
    String commandName = command.getBeanName();
    String defaultAdministerPermission = command.getAdministerPermission()
    String defaultExecutePermission = command.getExecutePermission()
    String overrideAdminPermission = null;
    String overrideExecPermission = null;
    String finalAdministerPermission = overrideAdminPermission == null ? defaultAdministerPermission
            : overrideAdminPermission;
    command.setAdministerPermission(finalAdministerPermission);
    result.add(finalAdministerPermission);
    String finalFxecutePermission = overrideExecPermission == null ? defaultExecutePermission
            : overrideExecPermission;
    command.setExecutePermission(finalFxecutePermission);
    result.add(finalFxecutePermission);
    try {
        session.saveOrUpdate(command);
        session.flush();
    } finally {
        //TODO - more swallowed exceptions.
    }
    return result;
}

//some other methods
}

Meine Test-Klasse(verwendet groovy teilweise)

import junit.framework.TestCase;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.ContextConfiguration;
import com.dc.core.security.service.impl.AuthService
import com.dc.core.behavior.command.model.impl.CommandMetadata;
import org.hibernate.SessionFactory
import org.hibernate.classic.Session

@ContextConfiguration(locations = "file:WebContent/WEB-INF/applicationContext.xml")
public class AuthServiceTest extends TestCase {

    @Autowired
    private AuthService authService;

    @Autowired
    private MockHttpSession mockHttpSession;

    @Autowired
    ApplicationContext appContext

    @Autowired
    SessionFactory sessionFactory

    private Session mockHibernateSession = Mockito.mock(org.hibernate.classic.Session.class);

    private CommandMetadata commandMetadata = new CommandMetadata();

    public void setUp() {
       appContext.getBeanFactory().registerScope("request", new RequestScope())
       MockHttpServletRequest request = new MockHttpServletRequest()

        ServletRequestAttributes attributes = new ServletRequestAttributes(request)
        RequestContextHolder.setRequestAttributes(attributes)
        CurrentRequestProperties currentRequestProperties = appContext.getBean("currentRequestProperties")
        session = sessionHandler.initiateSession(sessionFactory, currentRequestProperties)


    }

    public void testAddCommandPermissions() {
        commandMetadata.beanName = "TestBean"
        commandMetadata.administerPermission = "TestBean.administer"
        commandMetadata.executePermission = "TestBean.execute"
        Collection<String> results = authorizationService.addCommandPermissions(session, commandMetadata);
        assertTrue(results.contains("TestBean.administer"))
    }

    public void testCanary() {
        assertTrue(true);
    }
}

Wenn ich mit meinem test-Fall erhalte die folgende Fehlermeldung
java.lang.NullPointerException: Cannot invoke method getBeanFactory() on null object

Ich denke, Ursache des Problems ist appContext ist nicht injiziert richtig damit immer bin NPE. Aber ich konnte das Problem lösen. Ich wirklich zu schätzen jemand helfen auf dieser

Es ist nur eine Vermutung, aber braucht Man da nicht so etwas wie @RunWith(SpringJUnit4ClassRunner.class) auf die getestete Klasse?

InformationsquelleAutor RanPaul | 2014-06-06

Schreibe einen Kommentar