我在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());
}
}
编辑: 我所指的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,而不是如何获得豆子。我在这里和Google中都找不到帮助。编辑2:为了进一步澄清,POJO本身是完全相同的Java类,我使用两个Hibernate映射文件。唯一的区别是映射中的
catalog="this"
和catalog="that"
。我使用两个不同的SessionFactory,因为数据存储在不同的模式(也称为目录)中,相同的MySQL实例。
bean.getThing()
返回什么?这种类型的toString()
是什么样子的? - user180100bean1.getThing()
不等于bean2.getThing()
。 - user180100