2015-12-30 2 views
2

Я новичок в Junit. Недавно мне нужно добавить некоторые тестовые функции для проекта Spring Web. Итак, я добавляю новый проект только для тестирования.JUnit in Spring web project

Во-первых, я добавляю тестовый пример для тестирования ADServiceImpl, а следующий - мой тестовый код.

@Test 
public void test() { 
    ADServiceImpl service = new ADServiceImpl(); 
    UserInfo info = service.getUserInfo("admin", "123456"); 
    assertEquals("Result", "00", info.getStatus().getCode()); 
} 

После того, как я запустил тест и получил ошибку, «конечная точка» равна нулю. Но «конечная точка» устанавливается весной @Resource (name = «adEndpoint») из конфигурации xml.
Как я могу справиться с этой проблемой? Или есть другие рекомендации для тестирования веб-проектов весны? Спасибо огромное!

@Service("ADService") 
public class ADServiceImpl implements ADService { 

private final static Logger logger = Logger.getLogger(ADServiceImpl.class); 

@Resource(name = "adEndpoint") 
private String endpoint; 

public UserInfo getUserInfo(String acc, String pwd) throws JAXBException, RemoteException { 

    if (StringUtils.isBlank(endpoint)) { 
     logger.error("***** AD Endpoint is blank, please check sysenv.ad.endpoint param ******"); 
    } 

    ADSoapProxy proxy = new ADSoapProxy(); 
    proxy.setEndpoint(endpoint); 
    logger.debug("***** AD endpoint:" + endpoint + "******"); 

    String xml = proxy.userInfo(acc, pwd); 
    StringReader reader = new StringReader(xml); 

    JAXBContext jaxbContext = JAXBContext.newInstance(UserInfo.class); 
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 

    return (UserInfo) jaxbUnmarshaller.unmarshal(reader); 
} 
} 
+0

Вы можете включать объявление класса, что ваши тесты JUnit находятся в? Я предполагаю, что вы не указываете тестовый бегун (обычно это что-то вроде '@RunWith (SpringJUnit4ClassRunner.class)'. Это то, что говорит Spring, чтобы вставлять зависимости из вашего конфига. См. [Весенние документы] (http: // docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-framework) для получения дополнительной информации. – DaveyDaveDave

+1

@DaveyDaveDave да, это точка. У меня нет @RunWith (SpringJUnit4ClassRunner.class), чтобы добавить бобы. Большое спасибо! – Louis

ответ

0

При создании модульных тестов, которые требуются Spring быть запущены вам нужно добавить следующие строки в блоке тестового класса. Например:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = MySpringApp.class) 
public MyTestClass{ 
    @Test 
    ... 
} 

Подробнее here

+0

Спасибо большое. Теперь он отлично работает. – Louis