问题标签 [springjunit4classrunner]

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 投票
1 回答
340 浏览

spring-boot - 在测试类中为 spring-boot 和 testrail 使用多个运行器注释

我必须将我的测试与 testrail 链接起来,为此我必须使用 testrailrunner。但是,如果我排除了 springjunit 跑步者,那么我的测试在启动服务时失败,并且不可能同时使用这两个跑步者

对此有什么解决方法,以便我的测试使用服务 bean 进行初始化并仍然登录测试轨道?

0 投票
1 回答
2347 浏览

spring - spring boot tempory h2数据库表在junit4测试中为空

我正在使用 Spring Boot 1.2.5 并想做一些 JUnit4 测试。我有一个包含测试的 Eclipse 项目。在初始化期间,会创建一个临时 H2 数据库。我有一个 schema.xml 和 data.xml。初始化很好,但后来 5 个表中的三个是空的。

首先,我拥有由 Spring Boot 创建的数据库。我这边没有代码,只有资源文件夹中的 XML。这运行没有任何问题。然后我发现在测试中,五个表中有三个是空的。架构仍然存在,但数据不存在。

然后我改为手动创建 H2 数据库/数据源 bean,并以同样的方法检查是否所有记录都存在。这对测试结果没有影响。我只能表明,数据库在创建后按预期填充。似乎在 bean 创建和 JUnit 测试期间,一些例程正在对三个特定表进行删除。

这是输出:

稍后运行 JUnit 测试,它给了我这个结果:

DataSource 对象似乎相同,但记录数不同。在测试期间,前三个是空的。

这是测试:

这是完整的控制台输出:

对于表创建,我使用(示例):

对于我使用的数据插入:

感谢您对这个令人困惑的结果的任何帮助。

0 投票
2 回答
1532 浏览

spring - 为什么我不能从 ApplicationContextAware 实现的 bean 访问 ApplicationContext

我有一个 Spring JUnit 测试器类MySimpleTester

@

……

在适配器类中,我有:

……

我明白NullPointerException了,ApplicationContextNull在这里。

但是在SpringJUnitTestRunner课堂上MySimpleTester我可以找到正确初始化的 applicationContext 。我不包括mySimpleConfig.xml和包含的文件。MyAdapter当在应用程序服务器中运行时,类中的方法在getSimpleLinksList()Web 应用程序中工作得非常好,并且在那里获得了 appcontext。

只有通过 Spring 测试器才能访问静态应用程序上下文AppFactory类,因为它是通过AppFactory.getPropertiesObj(). 当其他测试类正在执行时,我正确设置了类路径。

0 投票
0 回答
358 浏览

oracle - 数据库代码中的自动 JUnit 测试错误,手动运行时不会出现

我有一套 JUnit 测试,可以在 STS/Eclipse 用完时工作,但在使用 Jacoco 从 Bamboo 运行时不起作用。当我们使用 Cobertura 从 Jenkins 运行测试时,它曾经工作过。当我说工作时,我的意思是测试出错了,特别是涉及我们的 SQL 数据库 (Oracle) 的测试。不接触数据库的测试没有错误。我们现在也使用比以前更好/更快的硬件,所以可能就是这样。我们现在也在运行 Java 8 而不是 7。但就像我说的,测试在 STS/Eclipse 上运行良好。我们一次改变了很多东西,所以我不知道该怎么做。

该错误具体是“错误发生在递归 SQL 级别 1 ORA-01000 超出最大打开游标”。

我们使用 Springsource Framework、ojdbc6 和 ucp,错误发生在以下堆栈跟踪中:

顺便说一句,这一切都来自于尝试调用:


我想我已经找到了根本原因,尽管还不是解决它的最佳方法(对想法开放)。

每组测试都会打开一些游标。随着那组测试完成运行,Spring 开始清理游标。但随后下一类测试开始并开始打开新的游标。我正在通过运行查询How to find Current open Cursors in Oracle 来观察“打开的游标”数字是否呈正弦增长 。显然我的旧硬件太慢了,清理速度比增长速度快,但是有了新硬件,它最终达到了 300 的限制(所以在某些时候团队中的其他人意识到默认的 50 太少了,当然有没有关于如何确定 300 正确的文档),以及该错误之后的任何测试都出现了该错误。

我试图缓解的事情:为所有涉及数据库的测试提供一个名为 TouchesDatabase 的超类,并使用一个休眠 10 秒的 @AfterClass 方法。
这实际上修复了除我的一个测试之外的所有测试,但它也使构建花费了两倍的时间来构建。

所以我想,好吧,显然有些测试打开的游标比其他测试多,所以我不会做 10 秒,而是查询打开了多少游标,如果超过 100,我会再睡一秒钟。不幸的是,我正在使用的游标查询(可能必须尝试不同的查询)似乎是多算了一些事情,或者做了一些奇怪的事情,因为下降到 100 个游标以下似乎需要更长的时间,而不是仅仅 10 秒的睡眠。当我不得不离开一天时,它就像第 3 次或第 4 次 db 测试课(超过 30 分钟)并且已经运行了 30 分钟,所以我会在早上看看,但显然不理想。

如果我找不到更好的游标查询,那么我将开始检查每个测试,看看是否有更聪明的方法可以在那里做事。顺便说一句,我们对生产应用程序没有任何问题,只是测试。

0 投票
0 回答
362 浏览

java - 如何在@PostConstruct 之前填充测试数据?

我正在开发一个需要运行 TCP 服务器的应用程序,这是它首先要做的事情之一。这目前是通过 Spring 配置类启动的:

它在使用现有的预填充数据库时工作正常,但在尝试编写集成测试时遇到问题:数据需要预先填充,但@PostConstruct如果它在 JUnit@Before方法中,则在数据填充之前触发,并且使用 SpringJUnit4ClassRunner 的@TestExecutionListeners.

我现在能想到的唯一解决方案是使用 a 初始化测试配置类中的数据@PostConstruct并确保首先加载它 - 但这似乎有点脏。编辑:刚刚尝试过,但由于 BeanCurrentlyInCreationException 而失败 - 看起来 EntityManagerFactory 的依赖注入尚未完成。

有没有更优雅的方式(例如我应该在其他地方运行 TCP 服务器,即不由 Spring 管理)?

0 投票
1 回答
2741 浏览

java - Spring 数据存储库未在测试用例类中注入 @Mock 返回 null?

存储库对象未注入测试用例类。这是我下面的测试类代码

你能帮我如何注入我的“EmployeeRepository”并且需要编写任何额外的逻辑。

0 投票
0 回答
1263 浏览

java - 模拟存储库对象从控制器测试用例返回空结果?

未从控制器测试用例模拟的存储库对象返回空对象这里是下面的代码

我有存储库调用来调用employeeServiceImpl 中的findByName("mike") 所以我不想访问数据库所以我在我的Controller 方法中进行了模拟,即testGetEmployees()

当我运行这个测试用例时,它调用 EmployeeController 方法,它调用 EmployeeCompositeService 方法而不是调用这个服务方法中的 EmployeeService 方法

有一个存储库调用,该调用在此控制器测试方法中被模拟。当我调试它返回空列表。我在控制器测试用例中做错了什么。你能帮我提前谢谢。

0 投票
1 回答
550 浏览

java - 服务对象没有用数据模拟?

我在 EmployeeController 侧有一个服务调用,即

所以我在 EmployeeControllerTestcase 中进行了嘲笑,即

当我运行控制器测试用例时,它会调用进一步的服务调用和存储库并访问数据库

所以我不想调用内部服务employeeCompositeService.getEmployeesByName(name);从控制器返回这个调用的结果。

你能告诉我我在上面的代码中做错了什么提前谢谢

0 投票
2 回答
378 浏览

java - jdbc 更新查询无法使用 derby 数据库和 SpringJUnit4ClassRunner 进行单元测试

我在尝试进行单元测试时遇到问题。

测试类很简单,例如:

服务:

job-runner-context.xml 重要部分:

jdbc 连接属性:

起初,我认为问题与提交问题有关,但我尝试将自动提交属性的值设置为“true”并手动调用testDataSource.getConnection().commit(),但它没有用。代码和方法运行良好,但测试没有更新 derby 数据库。在其他测试类中,数据预设dbUnit在同一数据库中并且代码有效。这个答案在这里给出了我检查的可能问题的一般列表,我正在读取和写入相同模式中的相同表。我错过了什么吗?

0 投票
1 回答
516 浏览

java - 在 SpringJUnit4ClassRunner 中获取所有类型的 Bean

我很难为以下测试课程找到合适的答案:

我想从有界中收集所有 Spring 托管context services.xmlService.

我很确定一定有这样的东西,但我不知道我要搜索什么。

非常感谢您的帮助。

斯特凡