问题标签 [unitils]

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 投票
0 回答
121 浏览

junit - Unitils 打破了标准的 EasyMock 行为?

在一个工作项目中,我遇到了一个真正令人讨厌的错误/功能。我找到了一个解决方案,但是我真的很好奇它为什么会发生。这一切都是因为该项目有一些用 unitils 而不是普通的旧 EasyMock 编写的遗留测试。考虑在两个测试类后面依次运行。

当我分别运行两个测试时,它们运行良好。两个绿色都工作。但是,如果我在彼此之后立即运行它们,则第二次测试失败并出现 java.lang.IllegalStateException: x matchers expected, y 记录错误(x 和 y 当然是整数,因为这是一个假的例子,我没有实数)。

我通过将 assertNotInvoked 行更改为:myRepo.assertNotInvoked().getById(null);

这当然不是真正的解决方案,我只是规避了匹配器的使用,我想知道我是否只是没有用它破坏遗留测试用例......有没有人有足够的 EasyMock + Unitils 经验可以帮助我理解这个 ?我最好的“猜测”是 AssertNotInvoked 没有以 EasyMock.replay()、EasyMock.verify() 块正确结束......但我可能是错的。

0 投票
1 回答
1083 浏览

junit - 带有单元的 H2 数据库

我使用扩展 unitils 用其中一个数据集初始化我的数据库。使用 Mysql、HsqlDB 和 PostgreSql,我没有任何问题,但使用 H2 我发现了问题。有人已经用unitils测试过H2吗?如果是这样,感谢您提供 unitils.properties 的内容。

在我的配置之下

这是我得到的例外

我使用了 unitils-dbunit 3.3

0 投票
1 回答
277 浏览

spring - Unitils @SpringApplicationContext - 如何找到初始化弹簧上下文所花费的时间?

我正在使用 unitils 进行测试。我在故障安全测试报告中看到了 90 多条 spring 上下文刷新消息。我需要知道初始化这些弹簧上下文需要多少时间。Unitils 没有适当的日志记录,因此无法使用框架日志对其进行跟踪。

位于@SpringApplicationContext测试类之上,所以不能在我自己的测试类中使用记录器

编写建议或感知类或拦截器将无济于事,因为所有这些类都必须在 spring xml 中注册,而那些在 spring xml 中注册的 bean 将仅在初始化上下文后加载

编写应用程序监听器类,我们只能捕获ContextRefreshedEvent,即在加载的上下文未初始化时。

无法捕获 ,ContextStartedEvent因为它是在start()使用ConfigurableApplicationContext interface. 而 unitils 动态创建 newClassPathXmlApplicationContext(..,..);来创建 spring 上下文(class:org.unitils.spring.util.ClassPathXmlApplicationContextFactory)

如何计算弹簧上下文初始化时间?

0 投票
1 回答
565 浏览

spring - Spring xml在子类中声明时初始化bean,但如果在父类中声明相同,则bean初始化失败

我的应用程序中有很多基于 Unitils 的集成测试类,它们使用@SpringApplicationContext(来自不同模块的不同 spring xmls)。为了减少创建的 spring 上下文的数量,我们计划创建一个基测试类,并仅从该基类初始化 spring 上下文,并进行所有其他测试以扩展该基类。

基类:

com.org.module1.mypack;

@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml" }) 公共抽象类 BaseTest{ ... }

更改前的子类:

com.org.module1.mypack.performance;

@SpringApplicationContext({ "spring-module4.xml" }) 公共类 ChildTest 扩展 BaseTest{ .. }

更改后的基类:

com.org.module1.mypack;

@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml", "spring-module4.xml" }) 公共抽象类 BaseTest{ ... }

更改后的子类:

com.org.module1.mypack.performance;

//@SpringApplicationContext({ "spring-module4.xml" }) 公共类 ChildTest 扩展 BaseTest{ .. }

现在我收到以下错误消息,并且未创建我的上下文: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.org.module5.prepare.MyBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=myBean)}

当 spring-module4.xml 在子类中时,上下文被正常创建,所有测试都照常执行。

注意:所有 spring xml 文件都在 src/main/resources 中,除了 spring-module4.xml 在 src/test/resources

0 投票
1 回答
2728 浏览

unit-testing - 数据库单元测试。约束禁用

我有一组单元测试来测试我的 DAO 层。我有以下要求: - 对于一个测试子集,我需要禁用约束(外键,唯一,不为空)。- 对于其他子集,我需要保留它们(我在这里检查数据完整性)。

所以对于几个测试我想启用约束,其他的要禁用。

首先,我尝试使用 DbMantainer(Unitils 的一部分),因为它具有禁用约束选项。但在那之后,我查看了源代码,发现它只能在我开始迁移过程时删除(通过更改表)约束。约束被删除一次后(在我启动第一个测试之前),我不能启用他们以后的(完整性测试)。

所以我的问题是: 1. 你能推荐我其他可以禁用约束的工具(如 DbMantainer 或 Unitils)吗?2. 如果不存在这样的工具,您认为在 db 单元测试中禁用和启用约束的最佳选择是什么?

0 投票
1 回答
457 浏览

encoding - 如何在 unitils / DBunit 中执行 UTF-8 脚本

我使用 UTF-8 编写了所有用于测试的 SQL 脚本。我所有的 java 代码都使用 UTF-8 字符集。当我尝试执行测试时,unitils/DBunit 将它们读取为其他编码(可能是 ISO 8859-1)。

我的数据库是 ORACLE。我尝试在我的环境中设置'NLS_LANG=AMERICAN_AMERICA.UTF8'。此设置在 sqlplus 中有效,但在 DBunit 执行中无效。

任何人都知道如何解决这个问题?

0 投票
1 回答
1266 浏览

java - 被驱逐的对象仍然会更新 Hibernate 中的数据库

我在驱逐实体时遇到问题,但对其所做的更改仍会更改数据库。这是我的 DAO 中方法的一部分。

在 DAO 方法中:

前:

后法

如您所见,AVATAR 中的原始行现在有一个空外键。

为什么?这发生在使用 Unitils 和 Spring 的单元/集成测试中这可能会影响 Hibernate DAO 的工作方式。

这一切都在内存中的 H2 数据库中。


添加一行后

有用 ...

所以我猜问题是 Hibernate 的实现List,但这怎么会影响行为呢?

0 投票
2 回答
1212 浏览

java - Maven- Pom.xml 属性在 unitils 配置文件中无法识别

我在 pom.xml 文件中包含了我的数据库配置,以便将它们用于我的项目测试,我正在使用 unitils 进行数据库集成我的 pom.xml 属性是

我的unitils配置如下:

当我运行测试时,出现以下错误:

开始嵌套异常

堆栈跟踪:

我认为 Maven 属性没有被传播,这就是 unitils 无法识别它们的原因。

0 投票
0 回答
1578 浏览

spring - java.lang.IllegalStateException:没有可用的模拟最后一次调用

嗨,我正在使用 unitils 进行一些单元测试,但我总是得到这个异常

我的项目;


- BlogspotTest
-- src
---hibernate.cfg.xml
-- test
---package.service.test
----BaseServiceTest
----BlogspotServiceTest
-- web
---WEB-INF
----blogspot-servlet -test.xml
----jdbc-test.xml

这是我的 BaseServiceTest

这是我的 BlogspotServiceTest

我错过了什么吗?请引导我走向正确的道路。tnx

在我的 blogspot-service-test.xml 里面

我不认为我的 jdbc-test.properties 是必要的,但为了完成这里的要求,

更新 :

在我的研究中,我发现了这一点

编写测试时的一条小建议是,当您倾向于对 最终方法执行此操作时,“期望”方法将引发异常。 这可能会给你一个 IllegalStateException 消息:“没有最后一次调用可用的模拟”。这基本上 意味着“帮助我无法模拟这个调用,现在你要我模拟它 !”。退后一步,想想这个 EasyMock 类扩展 将如何工作以模拟现有类?你会怎么做?是的, 你会扩展这个类,并覆盖这些方法!这就是 EasyMock 类扩展所做的。那么当你将一个 方法设为final时会发生什么?你不能覆盖它!如果你有任何 EasyMock 类扩展中的 IllegalStateException,检查您 倾向于“期望”(覆盖)的方法,如果它们被标记为“最终”。 删除“final”关键字,您将能够继续您的工作。 -斯特凡·亨德里克斯

我没有任何最终课程,并且我使用列出的 jar 文件:

easymock-2.3.jar unitils
-easymock-3.3.jar
easymockclassextension-2.3.jar

需要更新我的 jar 文件吗?

0 投票
2 回答
833 浏览

java - 带有 Hibernate4 的 Unitils

我正在尝试将 Struts/Spring 应用程序从 Hibernate 3.1 升级到 Hibernate 4.3。

我正在使用直到我的数据库测试,在 Hibernate 3.1 下,测试工作正常。在 Hibernate 4.3 下,测试失败并出现以下错误:

例如,以下测试将失败:

我检查了我的库,并且正在加载正确版本的 Unitils 和 Hibernate,并且我的 sessionFactory 被定义为org.springframework.orm.hibernate4.LocalSessionFactoryBean

在这一点上,我什至不知道如何进行。看来 Unitils 正在寻找 hibernate3.localSessionFactoryBean。我应该寻找什么来解决这个问题?

在我的 applicationcontext 文件中, sessionFactory 看起来像: