spring - 如何将 ScalaTest 与 Spring 集成

标签 spring scala scalatest

我需要使用 Spring 上下文中的 @Autowired 字段填充我的 ScalaTest 测试,但大多数 Scalatest 测试(例如 FeatureSpec 无法由 SpringJUnit4ClassRunner.class -

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="myPackage.UnitTestSpringConfiguration", loader=AnnotationConfigContextLoader.class)
public class AdminLoginTest {
    @Autowired private WebApplication app;
    @Autowired private SiteDAO siteDAO;

(Java,但你明白了要点)。

如何从 ApplicationContext 为 ScalaTest 填充 @Autowired 字段?

class AdminLoginFeatureTest extends FeatureSpec with GivenWhenThen with ShouldMatchersForJUnit {

  @Autowired val app: WebApplication = null
  @Autowired val siteDAO: SiteDAO = null

  feature("Admin Login") {
    scenario("Correct username and password") {...}

最佳答案

使用 TestContextManager,因为它会缓存上下文,因此不会在每次测试时都重新构建它们。它是通过类注解配置的。

@ContextConfiguration(
  locations = Array("myPackage.UnitTestSpringConfiguration"), 
  loader = classOf[AnnotationConfigContextLoader])
class AdminLoginFeatureTest extends FeatureSpec with GivenWhenThen with ShouldMatchers {

  @Autowired val app: WebApplication = null
  @Autowired val siteDAO: SiteDAO = null
  new TestContextManager(this.getClass()).prepareTestInstance(this)

  feature("Admin Login") {
    scenario("Correct username and password") {...}
  }
}

关于spring - 如何将 ScalaTest 与 Spring 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282471/

相关文章:

java - 在 spring 中使用注解时出现错误

java - spring data JPA CriteriaBuilder.isNull 返回语法错误

java - 在 Spring Batch 中,如何一个接一个地运行 2 个选择查询,我必须将第一个查询结果传递给第二个查询

java - 如何在play Framework 2.3.x中访问子项目中的父项目类

ScalaTest:单例对象重新初始化的问题

unit-testing - 如何断言从不使用 ScalaTest 和 ScalaMock 调用模拟方法?

java - spring mvc 建立多对一关系

scala - 将模拟 Actor 注入(inject) Spray 路线进行测试

java - 使用 Java.IO 准备文件路径

scala - 在Scala中使用多个Future作业控制主线程