问题标签 [spring-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
618 浏览

spring-security - spring 3 测试:@Autowired 的问题-> 无法加载上下文

我有以下测试类:

在这个类中, testCompoundService 被正确地自动装配并工作(如果实际问题是“禁用”的)。安全上下文包含以下自定义类:

并且该类包含自动装配的 testCompoundService:

问题是 @Autowired testCompoundService因依赖 testCompoundService 本身而TestCompoundPermission失败。依赖于 StructureService,后者依赖于 StructureRepository(由 Spring Data 生成)。例外是:NoSuchBeanDefinitionExceptionTestCompoundService

如果我@AutowiredTestCompoundPermission应用程序上下文中正确加载评论(当然,一些测试会因 NullPointerException 而失败,因为 testCompoundService 为空)。

这很奇怪,因为显然在测试类上加载完全正常的 bean 工作得非常好。为了完整起见,我还尝试使用构造函数参数并删除了@Autowired。结果相同。对我来说,看起来 2 个上下文是完全分离的,因此安全上下文无法从应用程序上下文访问 bean。我该如何解决这个问题?

编辑:

堆栈跟踪的最后一部分(整个堆栈跟踪很大!)

编辑2:

发现这个:

http://forum.springsource.org/showthread.php?113720-No-matching-bean-when-using-custom-PermissionEvaluator-and-Spring-Data-JPA

这正是我遇到的问题。但是,解决方法不起作用,因为<jpa:repository />它不再是有效元素。

0 投票
0 回答
628 浏览

java - jpa spring-test 刷新错误

我的数据库中有类似字段的表Product

description在类中定义ProductLocalization

在我添加columnDefinition = "LONGTEXT"

在该课程中,我可以根据需要设置超过 255 分的描述,但是我的 2 个测试在productDao.saveAndFlush(product)at之前开始失败product.setDescription(descriptions),重要的是,当我在应用程序中执行该操作时,而不是在测试中一切正常,只测试导致问题

saveAndFlush()是我从包中得到的方法org.springframework.data.jpa.repository

两个测试中的错误相同:

这是测试代码:

这里有什么问题我该如何解决?

0 投票
0 回答
1991 浏览

spring-test - 单元测试返回 DeferredResult 的 Spring MVC 控制器

我正在尝试测试返回 DeferredResult 对象列表的 Spring 3.2.1 控制器。我使用以下测试作为指导,但我想知道这个测试是否是集成测试而不是单元测试?

https://github.com/SpringSource/spring-mvc-showcase/blob/master/src/test/java/org/springframework/samples/mvc/async/DeferredResultControllerTests.java

当我运行单元测试时,我得到:

原因:java.lang.UnsupportedOperationException:在 pre-Servlet 3.0 运行时中没有异步支持

在研究这个错误时,我相信它与需要的 servlet 3.0 api 中包含的异步支持有关,这是有道理的,但是我需要包含哪些 Maven 依赖项才能使测试通过?有没有人像链接中的那样为 DeferredResults编写了成功的 spring mvc控制器单元测试?(再次,我假设上面的链接是单元测试而不是集成测试)。

谢谢

0 投票
1 回答
308 浏览

spring - 使用 spring 测试上下文来初始化数据

我想知道是否可以通过实现 TestExecutionListener 接口来初始化测试数据并使用 beforeTestClass 和 afterTestClass 加载/处置数据。测试数据将在平面文件中提供,我希望数据文件位置作为测试类注释的一部分

在上面的伪代码中,InsertTestDataExecutionListener 将实现 TestExecutionListener 接口,并在 beforeClass 方法中,从注解中获取数据集位置。我试图找出如何使用 TestContext 设置属性“testdata”的内容。

我应该使用反射来完成这项工作吗?

0 投票
1 回答
1947 浏览

spring-mvc - Spring-mvc + MockMvc + junit 结果是 200 但应该是 404

我使用 spring-test 框架版本 3.2.1.RELEASE,特别是 MockMvc 对象来测试我的控制器。

然而,问题是当 MockMvc 对象在不存在的 html 页面上执行时,它返回状态 200,但我的浏览器显示 404 状态 - 这是正确的,因为该页面不存在。如何检查 404 状态?(因为这是我期望的状态)

测试用例控制器:

解析器:

目录:

0 投票
2 回答
1389 浏览

rest - 在测试时在 RESTEasy 资源中注入 Spring bean

在单元/集成测试中,我尝试使用 RESTEasy 嵌入式服务器TJWSEmbeddedJaxrsServer或为了通过资源调用进行POJOResourceFactory模拟以进行测试。MockHttpRequest.get("/data")我的问题是,基于服务器或资源工厂的使用,我无法在我的资源中正常注入 Spring bean 的非空实例。

这是一些用于澄清的代码,在此先感谢。

Spring应用程序上下文:

简单资源.java:

单元测试 :

0 投票
2 回答
9236 浏览

java - 使用 TestExecutionListener 时 Spring 测试注入不起作用

我想结合使用自定义TestExecutionListenerSpringJUnit4ClassRunner我的测试数据库上运行 Liquibase 模式设置。我的TestExecutionListener工作正常,但是当我在我的类上使用注释时,被测 DAO 的注入不再起作用,至少实例为空。

监听器相当简单:

日志中没有错误,只是NullPointerException在我的测试中。我看不到 my 的使用如何TestExecutionListener影响自动装配或注入。

0 投票
1 回答
562 浏览

spring - 弹簧测试在测试后不回滚

我有一系列使用 Spring 测试和 H2 内存数据库的集成测试。我注意到 h2 数据库在每次测试后都不会回滚。

这是我的配置:

然后是 AbstractTest:

弹簧配置:

以及特定于测试的 config.properties:

以及正在测试的服务:

0 投票
2 回答
1110 浏览

spring - 在测试应用程序和嵌入式tomcat之间共享spring容器

我们正在使用 cucumber-jvm 在我们的应用程序中编写集成测试层。我们发现的挑战之一是管理测试和 Web 应用程序之间的数据库。

一个典型的场景是,我们希望在场景的给定步骤中持久化一些实体,然后在用户界面上执行一些操作,这些操作反过来可能会持久化更多实体。最后,我们要清理数据库。因为 cucumber-jvm 测试在一个 jvm 中,而 Web 应用程序在另一个 jvm 中运行,所以我们不能共享事务(至少以我知道的方式),所以必须手动清理数据库。

我最初的想法是在与 cucumber-jvm 测试相同的 JVM 中使用嵌入式内存数据库 (HSQLDB) 运行的嵌入式 Tomcat 服务器。通过这种方式,我们可以共享一个 spring 容器,并且通过扩展一个事务,可以从中检索所有对象。

在我的初始测试中,Spring 似乎被加载和配置了两次:一次是在测试开始并读取 cucumber.xml 时,第二次是在嵌入式 tomcat 启动并且 Web 应用程序读取其 applicationContext.xml 时。这些似乎在两个完全独立的容器中,因为如果我尝试在一个容器中解析另一个容器中指定的对象,那么它不会解析。如果我复制我的配置,那么我会收到有关具有相同 ID 的重复 bean 的错误。

有没有一种方法可以告诉 Spring 为我的测试应用程序和嵌入式 tomcat 使用相同的容器?

我正在使用 Spring 3.2.2.GA 和 Embedded Tomcat 7.0.39(两个库的最新版本)。

我疯了吗?我需要提供更多技术细节吗?抱歉,如果我使用了一些不正确的术语。

谢谢

ps 如果您对我的问题很熟悉,并且您可以建议我正在尝试的解决方案的替代解决方案,请告诉我!

0 投票
1 回答
4039 浏览

spring - Spring mvc 测试 - 使用 Autowired 注释测试控制器

我正在尝试使用 spring 测试框架为我的控制器创建一些测试。

在这篇文章之后:http: //blog.springsource.org/2012/11/12/spring-framework-3-2-rc1-spring-mvc-test-framework/我创建了这个测试类

我的 testContext.xml 是

现在,当我运行测试时,我会收到很多消息,例如:

所以通过 mockito 推断类型存在一些问题,但是当我进入调试模式并检查我的控制器时,我仍然可以看到对象被正确注入。(我@Autowire在我的控制器中使用注释)。

无论如何,当我尝试运行此测试时,由于以下原因导致测试失败

什么可能是我的问题的根源?我认为我遵循了本教程的每一步。