在 Fitnesse 测试中检索 applicationContext
Retrieving applicationContext in Fitnesse test
我正在使用 Fitnesse 测试来测试 Spring 控制器方法。
在测试的 class 中,applicationContext 是自动装配的(通过注解)。
当从 Fixture 而不是 Spring Framework 调用该方法时,自动装配似乎不起作用。
还有另一种方法来检索 applicationContext 吗?我无法使用 XML 文件,因为我们正在使用注释。我已在 Google 中搜索 "annotation Spring applicationContext Fitnesse Java",但我没有找到任何内容。
这是我的代码:
@Controller
public class MySpringController {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping(value = "/saveAllSecurityMaintenanceAllocations/",
method = {RequestMethod.POST })
public ResponseEntity myMethod(@RequestBody final List<String> inList,
final HttpServletRequest request) throws Exception {
if (applicationContext == null) {
System.out.println("applicationContext is null");
}
//functionality I need to test is in here and is using applicationContext
}
}
public class MyTestFixtureTest extends TableFixture {
List<String> aList = new ArrayList<String>();
public void setUp(){
aList.add("foo");
aList.add("foo2");
}
public void showResults(int fitnessRows){
MySpringController mySpringController = new MySpringController()
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
applicationContext = UnitTestConfig.createApplicationContext();
mySpringController.myMethod(aList, httpServletRequest)
}
}
"applicationContext is null" 正在打印。有谁知道如何模拟自动装配或知道另一种在 Fitnesse 测试中获取 applicationContext 的方法?
您需要使用 AnnotationConfigApplicationContext (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationConfigApplicationContext.html) 创建 applicationContext 的(静态)实例,将其构造函数传递给定义控制器应有权访问的上下文的注释 类。
这些 类 可以(当然)是您的应用程序使用的真实配置,或用于特定测试的自定义配置。
如果你有多个测试(即页面)使用相同的上下文,那么在某处初始化 applicationContext 一次(存储在 singleton/static 实例中)并让你的固定装置从中检索它是有意义的在那里,因为创建上下文是一项昂贵的操作。创建上下文的合理位置是在这些测试的 SuiteSetUp 中。
我正在使用 Fitnesse 测试来测试 Spring 控制器方法。 在测试的 class 中,applicationContext 是自动装配的(通过注解)。 当从 Fixture 而不是 Spring Framework 调用该方法时,自动装配似乎不起作用。 还有另一种方法来检索 applicationContext 吗?我无法使用 XML 文件,因为我们正在使用注释。我已在 Google 中搜索 "annotation Spring applicationContext Fitnesse Java",但我没有找到任何内容。 这是我的代码:
@Controller
public class MySpringController {
@Autowired
private ApplicationContext applicationContext;
@RequestMapping(value = "/saveAllSecurityMaintenanceAllocations/",
method = {RequestMethod.POST })
public ResponseEntity myMethod(@RequestBody final List<String> inList,
final HttpServletRequest request) throws Exception {
if (applicationContext == null) {
System.out.println("applicationContext is null");
}
//functionality I need to test is in here and is using applicationContext
}
}
public class MyTestFixtureTest extends TableFixture {
List<String> aList = new ArrayList<String>();
public void setUp(){
aList.add("foo");
aList.add("foo2");
}
public void showResults(int fitnessRows){
MySpringController mySpringController = new MySpringController()
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
applicationContext = UnitTestConfig.createApplicationContext();
mySpringController.myMethod(aList, httpServletRequest)
}
}
"applicationContext is null" 正在打印。有谁知道如何模拟自动装配或知道另一种在 Fitnesse 测试中获取 applicationContext 的方法?
您需要使用 AnnotationConfigApplicationContext (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationConfigApplicationContext.html) 创建 applicationContext 的(静态)实例,将其构造函数传递给定义控制器应有权访问的上下文的注释 类。 这些 类 可以(当然)是您的应用程序使用的真实配置,或用于特定测试的自定义配置。
如果你有多个测试(即页面)使用相同的上下文,那么在某处初始化 applicationContext 一次(存储在 singleton/static 实例中)并让你的固定装置从中检索它是有意义的在那里,因为创建上下文是一项昂贵的操作。创建上下文的合理位置是在这些测试的 SuiteSetUp 中。