2015-11-30 2 views
9

Dieser Code verwendet Spring 3.1 und Junit4 und Federtest 3.1. Ich möchte diesen Code mit junit3.8.x verwenden und laden. Dies ist auf ein Legacy-Build-System zurückzuführen. Wie kann ich das machen? Der Großteil der Online-Dokumentation für den Frühling konzentriert sich auf den folgenden Ansatz. Ich muss in der Lage sein, die Frühlingsklassen zu laden. In diesem Fall habe ich eine XML-Datei, rest-servlet.xml und die 'Services' Klassen sind kommentiert. Ich möchte in der Lage sein, diese Rest-Servlet-Federkonfigurationsdatei und die Setup-Feder vor jedem Test zu laden.Wie kann ich diesen 'Spring 3.1' orientierten junit4 Test mit SpringJUnit4ClassRunner in einen federorientierten Junit3.8 basierten Test umwandeln?

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd 
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context.xsd 
          http://www.springframework.org/schema/mvc 
          http://www.springframework.org/schema/mvc/spring-mvc.xsd">   
     <context:component-scan base-package="com.ca.services.rest.*,com.ca.services.test.*" /> 
     <mvc:annotation-driven /> 
    </beans> 

TestActivityLog:

import org.junit.Assert; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.context.ApplicationContext; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

import com.ca.services.rest.activity.services.ActivityDaoRepository; 
import com.ca.services.rest.activity.services.ActivityService; 
import com.ca.services.rest.activity.services.impl.ActivityServiceImpl; 
import com.ca.services.test.mock.MockActivityDaoRepository; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"file:**/WEB-INF/rest-servlet.xml"}) 
public class TestActivityLog { 

    @Autowired 
    @Qualifier("mockActivityDaoRepository") 
    private MockActivityDaoRepository repository; 

    @Autowired 
    private ApplicationContext applicationContext; 

    @Autowired 
    public TestActivityLog() { 
     super(); 
    } 

    @Before 
    public void setup() throws Exception {  
    } 

    @Test 
    public void testOne() {  
     Assert.assertEquals("abc", "abc"); 
    }  

    public void testService2() { 
     final ActivityDaoRepository repo = repository; 
     final String chk1 = "[POL.ActivityAPI:as1.0.0]"; 
     final String chk2 = String.valueOf(repo.getVersion()); 
     Assert.assertEquals(chk1, chk2); 
    } 


    public void testService3() { 
     final ActivityService service = new ActivityServiceImpl(repository);   
    } 

} 

Antwort

6

Dies wird durch SpringJUnitRunner Simulation erreicht werden kann. Diese Klasse lädt den Anwendungskontext von den angegebenen Konfigurationsorten (im Klassenpfad) und autowiring die Felder im Testfall.

Angenommen, wir haben eine Controller-Bean (definiert in beans.xml), die wir testen möchten.

public class Controller { 

    public String message() { 
     return "Hello"; 
    } 

} 

Testfall:

public class Spring38TestCase extends TestCase { 

    private Controller controller; 
    private ApplicationContext context; 

    @Override 
    protected void setUp() throws Exception { 
     //Initializing spring application context. 
     context = new ClassPathXmlApplicationContext("beans.xml"); 
     //Setting fields in test case explicitly in case of auto wiring 
     controller = context.getBean(Controller.class); 
    } 

    public void testController() { 
     assertEquals("Hello", controller.message()); 
    } 
} 
+0

Das wird funktionieren, ich dachte, es gab einige 3,8 Klasse im Frühjahr. –

Verwandte Themen