我试图为Rest Controller进行单元测试.我为数据库访问管理器做了一个存根(〜mock),效果很好.我唯一的问题是,当我开始我的单元测试时,它不会启动应用程序.
如何从单元测试中启动应用程序?
我使用的是弹簧4.2.3,弹簧靴1.3.7,junit 4.12.
这是我的课程:
TestRestController
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(locations = "classpath:/META-INF/spring/mvc/mvc-test-context.xml")
public class RestControllerTest extends AbstractTransitionnalTest {
@Autowired
private IManager Manager;
@Test
public void getTestSingleItem(){
Item itm = myTestItemPreInitiallized;
Manager.save(itm);
List<Map> apiResponse = restTemplate.getForObject(networkAddress + "/items", List.class);
// Assertions on apiResponse
}
}
Run Code Online (Sandbox Code Playgroud)
RestController:
@RestController
@RequestMapping("/items")
class RestController {
@Autowired
private IManager Manager;
// Controller content
}
Run Code Online (Sandbox Code Playgroud)
mvc-test-context.xml中的Bean
<bean
id="IManager"
class="com.service.ManagerStub">
</bean>
<bean
id="RestController"
class="com.controller.RestController">
</bean>
Run Code Online (Sandbox Code Playgroud)
包含main的应用程序类
@Configuration
@EnableAutoConfiguration
@EnableTransactionManagement
@ImportResource({ "classpath:/META-INF/spring/context-application.xml" })
public class Application {
Run Code Online (Sandbox Code Playgroud)
如果我现在运行它,应用程序类没有启动,我得到以下错误:GET请求地址的I/O错误:连接被拒绝
如果您没有确切的解决方案,或者想提出另一种方法来执行此操作或解决方法,我希望的是仅在我启动测试时才 …