问题标签 [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 回答
1588 浏览

spring - Spring 3 - 真正的集成测试

目前我正在开发一个基于弹簧的应用程序。我确实为应用程序的许多目的进行了一些单元测试。问题是,我还没有找到任何解决方案来对我的应用程序进行真正的集成测试。

让我给你举个例子:

在我当前的测试中,我确实为特定控制器设置了一个请求,并将这些组件传递给我的处理程序:

但这不是真正的集成测试,因为我的意思是,好吧我确实有一个请求,myController 应该处理这个请求。

这是一个问题,因为我真正想要测试的是以下内容:

我确实有一个请求,我的应用程序应该处理这个请求。我不想指定控制器,因为如果正在运行的应用程序和对“/customer”的请求,spring 会调度哪个控制器来解决我的请求。我真的很想模拟我是一个浏览器或另一个向我的后端发送请求的客户端。

我想测试这个的原因是,否则某种测试会通过,尽管测试的功能在“现实世界”中不起作用

我可以给你这个例子来理解测试与生产运行的不同之处:

假设我确实在带有参数的表单中上传了文件。我的控制器功能是这个:

看看 RequestMethod.PUT,这在生产版本中不起作用,因为上传文件的 html 标准是 POST。

在我的单元测试中,我这样做:

问题:测试通过了,但它不应该通过。该测试通过的原因有很多。首先,我指定请求。我不是说我有一个请求,而是我不得不说我有一个 MultipartRequest。这会导致调度程序 servlet 在一个名为 isMultipartRequest() 的函数中返回 true。在生产运行中,它返回 false,因为 PUT 方法上没有多部分请求。此外,我再次指定应处理此请求的控制器。

也许还有其他例子,但我想说的是,有没有办法在真实条件下测试我的应用程序,包括我的 html 协议和其他一切?

我真的很感激任何帮助!

提前致谢

0 投票
2 回答
1560 浏览

unit-testing - Unitils 与 Spring TestContext 框架

我正在考虑为我的 spring+hibernate Web 应用程序使用哪个测试框架。最初我发现并且对 Unitils 很感兴趣,但后来我看到了标准的 Spring TestContext 框架并开始产生一些疑问。我对这个主题很陌生,但到目前为止我的理解如下:

单位优点:

  • 混合了各种其他测试框架,例如 EasyMock 或 DbUnit
  • 构建在框架之上,提供一些额外的价值,即休眠映射测试或反射测试实用程序

Spring TestContext 框架的优点:

  • 允许在测试时使用标准的 Spring 注解
  • 可能拥有更大的用户群和更好的支持(这是我的假设,因为 Unitils 似乎基本上是由两个人创建的)
  • 还内置了一些 Unitils 功能(例如反射测试实用程序)
  • 如果我需要任何 Unitils 的“更大”功能,例如 DbUnit 或 EasyMock,我可以直接从源代码获取常规 DbUnit 或 EasyMock - 这使我可以始终拥有最新版本的 DbUnit/EasyMock,而无需等待 Unitils 发布他们的使用当前 DbUnit/EasyMock 的新版本

所以现在我更倾向于使用 Spring TestContext Framework。有没有人对这些框架有更多经验并且可以帮助我朝着正确的方向倾斜?除了所有这些框架的集成之外,Unitils 本身实际上提供了什么?

[编辑] 刚刚发现了 Unitils 提供的更多内容:

这是一个关于 Unitils 的精彩演示,它说服我开始使用 Unitils: http ://www.javapolis.com/confluence/download/attachments/32918/C_14_09_04.pdf

我暂时把这个问题悬而未决,也许有人会想出一些其他的想法......

0 投票
1 回答
1737 浏览

java - 测试中的 Spring 3 @Autowire

我现在有一个恼人的问题。由于自动接线,我的测试失败了。

无法自动装配字段:私有 k.dao.CompanyDao k.dao.CompanyDaoTest.companyDao;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [k.dao.CompanyDao] 的匹配 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。

我认为@ContextConfiguration 可能是问题所在?

考试

公司道

公司DaoJpa

通用道

servlet-context.xml

0 投票
2 回答
30891 浏览

h2 - 使用 H2 db 配置进行 Spring 测试

我在生产环境中使用 Oracle,我想使用 H2 进行测试。我可以打字;

所以我的表格和脚本是自动创建的。但我无法设置此数据库的 URL 值。(对于 H2-Oracle 兼容性,我应该将 ;MODE=Oracle 添加到 url 部分)

有没有办法实现这个目标?

或者只是相反的解决方案;

此时,我可以编辑 URL 部分,但如何将默认测试脚本(创建和数据 sqls)加载到此数据源?

0 投票
1 回答
4340 浏览

jpa-2.0 - 测试 Spring-JPA

我正在使用 Spring (3.1.x)、JSF 2、JPA 2 (Hibernate Provider) 为 tomcat 6.x 开发 Web 应用程序。我想测试我的 DAO 类。

在我的 DAO 课程中:我这样做:

在 Spring 配置中;

在persistence.xml中

这是我第一次进行测试,当我测试时我不想使用相同的持久性单元。我听说过使用 xml 数据的 dbunit,但我不明白如何在测试期间更改持久性单元。你能帮我或给我一些例子,教程。

谢谢。

0 投票
5 回答
77564 浏览

spring - 跨junit测试类重用spring应用程序上下文

我们有一堆 JUnit 测试用例(集成测试),它们在逻辑上被分组到不同的测试类中。

如http://static.springsource.org/spring/docs/current/spring-framework-reference中所述,我们能够为每个测试类加载一次 Spring 应用程序上下文,并将其重新用于 JUnit 测试类中的所有测试用例/html/testing.html

但是,我们只是想知道是否有一种方法可以为一堆 JUnit 测试类只加载一次 Spring 应用程序上下文。

FWIW,我们使用 Spring 3.0.5、JUnit 4.5 并使用 Maven 构建项目。

0 投票
2 回答
8308 浏览

java - 阿帕奇骆驼测试

我们使用 Spring 进行 DI 和 Camel 进行路由/消息传递。我被要求为我们的各种组件设置一些(JUnit)单元测试(它们都以管道方式将消息相互路由)。

在查看了通用的Camel 测试文档和Camel-Spring 测试文档之后,似乎单元测试骆驼端点的首选方法是通过Spring Test Context Framework使用对象的子类等AbstractJUnit38SpringContextTests

我对这些 API 的经验绝对为零。所以,虽然它们读起来很有趣,但我很难把它们放在上下文中(不是双关语)。

因此,我正在努力解决一些初始概念:

一方面,什么时候适合使用 a MockEndpoint, vs DataSet, vs Test

此外,Camel-Spring 文档(上面的链接)提供了以下示例:

如果我什至开始理解这个 API,那么它上面的代码似乎从一个MockEndpoint命名的读取所有消息mock:foo......但我看不到这些消息来自哪里(它们如何到达端点第一名)!

所以我的第二个问题是:确定哪些端点要“存根”(模拟)的标准做法是什么?例如,如果相同的 JMS 消息队列被两个不同 JAR/WAR 中的两个端点使用:一个是生产者,另一个是消费者?在这种情况下,ProducerComponent(生活在里面producer.war)是一个将消息推送到的 Camel 端点someQueue。并且ConsumerComponent(住在里面consumer.war)是另一个消费消息的 Camel 端点someQueue

SO将如何组织两个组件的单元测试?

提前感谢您在正确方向上的任何推动!

0 投票
1 回答
7590 浏览

spring - @Rollback(false) 在使用 SpringJUnit4ClassRunner 之前不适用于 @Before

在我的 Spring 应用程序的 JUnit 测试中,我想在 setup 方法中插入大量数据,然后使用它进行测试。但是,@Before即使我用@Rollback(false)

这是我正在尝试做的简化版本:

我也尝试过使用@BeforeClass,但这要求方法是静态的,并且在@Autowired调用任何 setter 方法之前执行,所以我无法访问@BeforeClass运行时需要调用的服务。

我尝试使用@PostConstruct,但是有一个事务可用的问题(我的设置是这样一个 Hibernate 会话仅在事务开始时可用)。奇怪的是,一个会话似乎可用,但从同一会话中获取的两个对象并不相等,这意味着 Hibernate 一级缓存似乎失败了,或者每个操作都发生在单独的会话中。@BeforeTransaction似乎表现出相同的行为。

0 投票
2 回答
3527 浏览

hibernate - Spring 3 集成测试——sessionFactory 初始化异常

当我运行我的 spring junit 测试时,我收到了这个错误消息:

……

你能帮我找出那个错误信息的原因吗?似乎我对 slf4j 的依赖项有一些问题 - 但我在项目中有它们。

测试类:

Spring测试上下文配置:

依赖项(来自 POM.XML 的版本):

0 投票
12 回答
127557 浏览

java - Mockito 异常 - when() 需要一个参数,该参数必须是模拟上的方法调用

我有一个使用 Mockito 和 Spring Test 框架的非常简单的测试用例。当我做

我得到了这个例外。

我尝试了不同的方法,但不断收到此错误消息。我正在使用带有 Mockito 的 Spring 3.1.0.RELEASE。请分享并指导我正确的方向。