`
lsk
  • 浏览: 112411 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Junit assertNotNull()断言hibernate的一个小陷阱

    博客分类:
  • Java
阅读更多
几乎所有人在断言一个对象是否为空的时候都会调用assertNotNull(obj).
但是在测试hibernateDao的方法时需要注意一下assertNotNull()这个方法.
例如:
junit 测试如下:
Info info = dao.loadById(infoId);
assertNotNull(info);

这段代码看似没什么问题.其实是有问题. load方法返回的是一个代理对象(Proxy).是实实在在的引用一个内存的对象.
assertNotNull方法只是根据 obj!=null 来判断这个断言是否为true或者false.
假如数据库当中存在id为infoId的对象.上面那个测试将不会有问题.
但是如果数据库当中不存在id为infoId的这个对象.这个测试将会隐藏一个bug.
比如在后面加上一段System.out.print(info);
你会发现如果不出现session was closed 情况时,实际上会抛出一个object not found 的异常!

小小的陷阱~.呵呵

6
0
分享到:
评论

相关推荐

    hibernate和junit的jar

    **JUnit 4.10**是JUnit框架的一个较旧版本,尽管如此,它仍然是许多Java开发者进行单元测试的首选工具。JUnit提供了以下特性: 1. **注解驱动**:通过使用@Test、@Before、@After等注解,可以方便地定义测试方法和...

    单元测试JUnit常用断言方法

    - **功能**: 断言两个对象`a`和`b`引用的不是同一个对象。 - **参数**: `a` 和 `b` 为任意类型的对象。 - **使用场景**: 当需要验证两个变量指向的对象不是同一个实例时使用此方法。 - **示例**: ```java Object ...

    JUnit常用断言方法.txt

    JUnit 是一个用于编写和运行可重复测试的框架,主要用于Java程序的单元测试。在进行单元测试时,我们经常需要使用到断言方法来验证被测代码的行为是否符合预期。本文将详细介绍JUnit中常用的几种断言方法及其应用...

    JUnit常用断言方法1

    4. `assertNotNull(a)`:这个断言用于检查一个对象引用是否非空。如果a是null,断言失败。它通常用于确保对象已经成功初始化。例如,`assertNotNull(myObject)`确保`myObject`已被赋值。 5. `assertNull(a)`:此...

    junit各种断言

    JUnit 是一个用于编写和运行可重复测试的框架,尤其适用于 Java 开发环境。它通过提供一系列的断言方法来帮助开发者确保代码按照预期的方式工作。这些断言方法可以帮助开发者检查实际结果是否与预期结果相符,从而...

    JUnit(针对spring和hibernate)

    例如,你可以使用`@RunWith(SpringRunner.class)`注解来运行一个Spring支持的JUnit测试类,这样可以加载Spring配置并创建bean实例。`@Autowired`注解可以帮助注入需要测试的bean,而`@MockBean`或`@SpyBean`则可以...

    Junit4的小实例程序

    总之,这个"Junit4的小实例程序"是一个很好的学习资源,通过它,你可以学习到如何使用JUnit4进行单元测试,包括创建测试类、编写测试方法、使用断言以及了解测试生命周期等核心概念。实践这些示例,将有助于提升你的...

    junit+hibernate3.2+spring2.5工程

    综上所述,这个"junit+hibernate3.2+spring2.5"工程提供了一个完整的例子,展示了如何在Java开发中有效地结合使用Junit、Hibernate和Spring。通过学习和实践这个工程,开发者可以深入理解这三个框架的协同工作方式,...

    hibernate+junit+mysql-jdbc开发核心jar包三合一

    **Hibernate** 是一个对象关系映射(ORM)框架,它允许开发者使用面向对象的编程模型来操作数据库。Hibernate简化了数据库操作,将Java对象与数据库表之间的映射配置在XML文件(hibernate.cfg.xml)或注解中。通过...

    spring+hibernate整合列子,用junit测试增删改查都实现(MySQL包含表)

    本项目"spring+hibernate整合列子"是一个实例教程,展示了如何将这两个框架结合在一起,用于实现对MySQL数据库的CRUD(创建、读取、更新、删除)操作,并且通过JUnit进行单元测试,确保功能的正确性。 首先,Spring...

    Java Open Source Programming with XDoclet JUnit WebWork Hibernate

    4. **Hibernate**:Hibernate是一个强大的对象关系映射(ORM)框架,它消除了Java应用程序与数据库之间的复杂性。通过学习Hibernate,开发者可以更专注于业务逻辑,而不是SQL查询。书中会涵盖Hibernate的基础知识,...

    联想培训junit断言函数PPT学习教案.pptx

    JUnit是一个广泛使用的Java单元测试框架,它提供了丰富的断言函数来帮助开发者验证程序的行为是否符合预期。这篇联想培训的PPT详细介绍了JUnit中的几种主要断言函数,包括assertEquals、assertTrue、assertFalse、...

    junit测试spring,hibernate的dao层代码

    `Spring` 和 `Hibernate` 分别是Java企业级应用中的两大支柱,`Spring` 提供了一个强大的依赖注入容器和服务管理,而 `Hibernate` 是一个优秀的对象关系映射(ORM)框架,简化了数据库操作。将 `JUnit` 与 `Spring`...

    JUnit是一个开发源代码的Java测试框架

    JUnit 是一个广泛使用的Java编程语言的开源测试框架,它的主要目标是支持单元测试。作为xUnit家族的一员,JUnit提供了一套简洁而强大的工具,帮助开发者编写可重复执行的测试用例,确保代码的质量和功能的正确性。 ...

    Junit4使用方法

    JUnit4 使用方法 ...JUnit4 是一个功能强大且灵活的测试框架,提供了许多实用的测试工具和断言方法。通过学习 JUnit4 的使用方法和核心概念,可以提高测试效率和测试质量,确保软件的可靠性和稳定性。

    Junit测试Void方法

    以下是一个具体的示例,展示如何使用 Junit 测试一个 `void` 类型的方法。 ##### 全局变量声明 首先,定义了一个全局变量 `flag` 来记录 `void` 方法执行的结果: ```java public static int flag = 0; ``` 这个...

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    SpringMVC+Hibernate+Junit4基本框架近乎0配置Jar包

    总结来说,"SpringMVC+Hibernate+Junit4基本框架近乎0配置Jar包"是一个为Java Web开发准备的便利集合,它包含了构建MVC应用、数据库操作和测试所需的核心组件。通过这些Jar包,开发者可以快速搭建起一个基础框架,...

    junit的jar包

    Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...

    联想培训junit断言函数学习教案.pptx

    Java中的JUnit是一个流行的单元测试框架,它为开发者提供了丰富的断言函数来验证程序代码的行为是否符合预期。在联想的这次培训中,主要讲解了JUnit中的一些核心断言函数,包括`assertEquals`、`assertTrue`、`...

Global site tag (gtag.js) - Google Analytics