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

jdbc - 为集成测试煽动数据库失败

在运行集成测试(在这种情况下,Web 服务与 JDBC 通信)时,如何强制数据库抛出错误,以便检查产生的肥皂错误?

我正在使用 Spring 的事务测试框架,所以仅仅发出一个DROP TABLE whatever;来破坏它是不合理的吗?:D

0 投票
13 回答
53709 浏览

spring - 单元测试环境中的Spring bean重新定义

我们将 Spring 用于我的应用程序目的,并将 Spring 测试框架用于单元测试。不过我们有一个小问题:应用程序代码从类路径中的位置列表(XML 文件)加载 Spring 应用程序上下文。但是当我们运行单元测试时,我们希望一些 Spring bean 是模拟的,而不是成熟的实现类。此外,对于某些单元测试,我们希望一些 bean 成为模拟,而对于其他单元测试,我们希望其他 bean 成为模拟,因为我们正在测试应用程序的不同层。

所有这一切意味着我想重新定义应用程序上下文的特定 bean 并在需要时刷新上下文。在执行此操作时,我只想重新定义位于一个(或多个)原始 XML bean 定义文件中的一小部分 bean。我找不到一个简单的方法来做到这一点。人们一直认为 Spring 是一个对单元测试友好的框架,所以我一定在这里遗漏了一些东西。

你有什么想法吗?

谢谢!

0 投票
1 回答
605 浏览

java - 将 Spring 集成测试放在不同的类和包中

我正在使用 AbstractTransactionalSpringContextTests 运行 spring 集成测试。spring 上下文只加载一次,然后运行所有测试。如果我希望我的测试在许多类和包中,我该怎么做。

当然,对于我的所有测试(在所有类和包中),spring 上下文应该只加载一次,而不是每个类或包一次。

0 投票
6 回答
25389 浏览

spring - Spring 上下文测试找不到配置位置

我有一个分布在多个 Spring bean 定义 xml 文件中的大型应用程序。在我的测试套件中,我使用 FileSystemXmlApplicationContext 手动加载我需要的 XML 文件来执行我想要运行的测试。这减少了测试设置时间,并允许我使用与生产中使用的完全相同的配置文件。

现在我正在尝试使用 Spring 的事务测试基类,它获取配置位置并为我加载上下文。由于某种原因,当创建应用程序上下文时,Spring 找不到任何配置文件。这很令人困惑,因为我从与使用 FileSystemXmlApplicationContext 自己加载配置时相同的工作目录运行测试。如果我在所有配置位置前加上“文件:”,则会找到我在测试中指定的路径,但找不到任何由配置中定义的 bean 导入或引用的文件(例如属性文件)。这是怎么回事?我可以获得扩展弹簧上下文测试类的测试,使其与我自己创建上下文的测试相同吗?

例如,像这样创建上下文可以正常工作:

如果我扩展 AbstractTransactionalDataSourceSpringContextTests 以下找不到 services-context.xml:

这会找到服务上下文,但其中定义的 PropertyPlaceholderConfigurer 无法找到它的属性文件。

0 投票
1 回答
482 浏览

spring - DBUnit:如何仅在失败时刷新?

我正在使用 DBUnit 来测试 Spring/Hibernate 持久性。

我创建了一个抽象测试:

但是每当我运行测试时,它会在每个测试方法之前再次刷新数据库,这很长而且我认为这不是很好。

我怎样才能仅在失败时重新加载/刷新?

PS:代码有多烂?

0 投票
3 回答
2052 浏览

spring - 如何使用 JMock 在 Java 中模拟静态变量

我有一个单元测试问题,其中一个类有一个想要加载 Spring Application Ctx 的静态变量。

这个类不是从 Bean Factory 出来的,我无法改变这个事实。

这工作正常,但很难JMock,或者至少我不知道一种方法,直到我可以 Spring Ctx 想要启动。不适合单元测试情况。

有没有人知道的解决方法?我可以选择将静态变量更改为我想要的任何东西..

谢谢。

0 投票
7 回答
84932 浏览

java - 如何使用 @PathVariable 对 Spring MVC 控制器进行单元测试?

我有一个类似于这个的简单带注释的控制器:

我想用这样的单元测试来测试它:

问题是 AnnotationMethodHandlerAdapter.handler() 方法抛出异常:

0 投票
1 回答
12617 浏览

java - SpringJUnit4ClassRunner 为每个测试初始化​​bean?

下面的测试说明了这个测试 bean 被 Spring 初始化了两次。我希望有人能告诉我为什么会这样,因为它应该只有一次。这是测试:

这是bean文件:

这是输出:

0 投票
1 回答
2096 浏览

java - Spring Tests:执行测试方法后事务不回滚

我正在尝试使用 AbstractTransactionalJUnit4SpringContextTests 的子类为部署在 Weblogic 8.1 上的遗留应用程序创建集成测试。

我的测试方法有以下注释:

我的测试类还引用了 org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean 类型的 bean,它代理了部署在我的 weblogic 服务器上的 EJB。

当我在测试方法中按顺序调用此代理 bean 上的方法时,事务会在测试结束时正确回滚。

例如:

但是,我想对同一个 EJB 方法进行 2 次并行调用。因此,我创建了一个实现 Callable 的内部类,以便在 2 个不同的线程中调用我的方法并希望并行运行这些方法。
但是,这样做似乎会使 ejb 方法在我的事务之外被调用,并且没有任何回滚。

这是我并行运行方法调用时完整的测试类想要的:

有没有办法让这个回滚???

谢谢你的帮助。

问候,

菲利普

0 投票
8 回答
54212 浏览

java - 在春季测试中请求范围内的bean

我想在我的应用程序中使用请求范围的 bean。我使用 JUnit4 进行测试。如果我尝试在这样的测试中创建一个:

使用以下 bean 定义:

我得到:

所以我发现这个博客似乎很有帮助: http ://www.javathinking.com/2009/06/no-scope-registered-for-scope-request_5.html

但我注意到他使用了AbstractDependencyInjectionSpringContextTests,这在 Spring 3.0 中似乎已被弃用。我此时使用 Spring 2.5,但认为按照文档建议切换此方法以使用 AbstractJUnit4SpringContextTests 应该不会太难(好的文档链接到 3.8 版本,但我使用的是 4.4)。所以我将测试更改为扩展 AbstractJUnit4SpringContextTests... 相同的消息。同样的问题。现在我想要覆盖的 prepareTestInstance() 方法没有定义。好的,也许我会将那些 registerScope 调用放在其他地方......所以我阅读了更多关于TestExecutionListeners并认为这会更好,因为我不想继承 spring 包结构。所以我将我的测试更改为:

期望我必须创建一个自定义侦听器,但是当我运行它时。有用!很好,但为什么呢?我看不到任何股票侦听器在哪里注册请求范围或会话范围,为什么会这样?没什么可说的,我想要那个,这可能不是 Spring MVC 代码的测试......