【发布时间】:2016-03-17 09:00:57
【问题描述】:
我的 Junit 4.12 测试代码中有这个奇怪的问题。该应用程序使用 Spring Framework 4.1.6 和 Hibernate 4。比较来自不同数据库的两个 bean 时出现此错误
java.lang.AssertionError: expected: null<null> but was: java.lang.String<null>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at my.test.TestClass.method(TestClass.java:105)
这是什么意思?如何解决?
我的测试类使用SpringJUnit4ClassRunner 运行,看起来与此类似
@ContextConfiguration(
{
"classpath:beans-test.xml"
}
)
@RunWith(SpringJUnit4ClassRunner.class)
public class TestMdtTechnicalGridGeneration extends AbstractJUnit4SpringContextTests {
@Test
public void method() {
assertEquals(bean1.getThing(), bean2.getThing());
}
}
edit:我指的bean是一个简单的POJO,你可以想象它是这样的:
public class Thing {
private String thing;
public void setThing(String thing) {
this.thing = thing;
}
public String getThing() {
return thing;
}
}
我让他们使用 Hibernate 沿线
SessionFactory mySF = (SessionFactory) applicationContext.getBean("mySessionFactory");
Query query = mySF.openSession().createQuery("FROM Thing WHERE code = '" + code + "'");
List<Thing> listThing = return query.list();
bean1 = listThing.get(0);
解决接近投票: 我不确定所有这些细节是否有帮助,问题是关于我得到的奇怪 AssertError 而不是我如何得到豆子。我在 SO 和 Google 中都找不到帮助。
edit2:进一步说明,POJO 本身是完全相同的 Java 类,我使用了两个休眠映射文件。唯一的区别是映射中的catalog="this" 和catalog="that"。我使用两个不同的 sessionfactories,因为数据存储在不同的模式(也称为目录)中,相同的 MySQL 实例。
【问题讨论】:
-
什么是
bean.getThing()返回,这个类型的toString()是什么样的? -
“这是什么意思?”这意味着
bean1.getThing()不等于bean2.getThing() -
你能发布你的 bean 类吗..
标签: java spring hibernate junit