`
jiangduxi
  • 浏览: 458773 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

测试没有返回值的方法

阅读更多
在使用JUnit进行单元测试的时候,常会碰到返回值为viod的方法.那该怎么测试这样的方法呢?
分析难点:
    一般测试总是将一个期望值与一个实际值进行比较。这里直接这样去思考肯定是行不同的。
方法:
     没有返回值的方法,一定有一些可以被观测的地方,比如说一个对象的状态被改变,如果你实在找不出,那恭喜你这个就不需要测试了。因为这个方法根本没有用。所有你必须找到合适的断点。犹如调试程序那样设置断点。找出了断点那就也可以设置一个断言了。恭喜你,你已经找出了方法解决这样的方法的测试了。

现在来试试你分析和找断点的能力吧!现在我们测试一个对象放入容器。Collection.add(Object)方法没有返回值。
 public class AddToArrayListTest extends TestCase{
   public void testListAdd(){
      List list = new ArrayList();
      assertFalse(list.contains("hello"));
      list.add("hello");
      assertTrue(list.contains("hello"));
        }
   }

这个是一个简单的测试程序。

说说思路吧!
1. 创建一个新的空容器
2. 判断这个容器为空
3. 将对象加入到容器中。
4. 查询空容器中是否存在添加的元素。

记住当你在测试的时候能找到“是否存在”这样的字样那么你就基本能进行测试设计了。


现在看看另外一种情况吧! 如果一个方法从其他某个地方获取数据,但不显式地声明数据是否被成功的装载,该怎么测试呢?下面看看以下这个方法可性不?
  public void testLoadProperties() throws Exception{
    Properties properties = new Properties();
    properties.load(new FileInputStream("application.properties"));
    assertEquals("root", properties.getProperty("usename"));
    assertEquals("123456", properties.getProperty("password"););   
}
注意,这个测试有些事不可靠,因为它从测试程序之外,的其他文件获取数据。这个测试使用load()方法,并验证它的主要:期望的数据被正确地从配置文件中装载进来。

讨论:
  以上这个方法是否有效,取决于要测试的方法是否有可以观测的断点,任何一个方法要么有返回值,要么有可以观测的断点。

总结: 如果没有办法找到可以观测的一个断点,那么请你向办法为测试创建一个出来。
分享到:
评论

相关推荐

    如何测试有无返回值 jnnit

    #### 使用JUnit测试返回值 当测试一个方法时,我们通常关注的是该方法是否能正确返回期望的结果。这包括但不限于: - 方法是否有返回值。 - 返回值是否符合预期。 - 对于没有返回值的方法(如`void`类型),则需要...

    有返回值方法和没有返回值的方法测试。类库方式

    方法分为两种主要类型:有返回值的方法和没有返回值的方法。理解这两种方法的区别和使用场景是编写高效、清晰代码的关键。 首先,我们来谈谈有返回值的方法。这类方法在执行完其功能后会返回一个结果给调用者。...

    测试android sqlite insert and delete 方法的返回值

    验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...

    【小程序云开发】本地调试和云端测试的结果不一致,返回值result为null

    1.调用云函数的时候,云函数调试时返回值不是null,但是到了前端拿到的result却是null。 2.调试云函数,本地调试和云端测试/真机测试结果不一样。表现为本地测试正常运行,云端和真机出错。 解决方法:异步操作的...

    vc++调用python源码(带返回值)测试

    本示例中的主题是“vc++调用python源码(带返回值)测试”,这涉及到微软的Visual C++(vc++)作为C++的IDE,如何通过交互方式调用Python脚本,并接收返回值。这种技术通常被称为语言间互操作或封装,它允许开发者利用...

    使用Runnable模拟Callable接口实现线程有返回值

    大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...

    WCF参数与返回值测试的示例代码

    本文将深入探讨WCF中参数和返回值的处理,并通过一个示例代码来展示如何进行测试。 首先,我们需要理解WCF服务的基本结构。一个WCF服务通常由一个接口定义(IService1),一个实现类(Service1)以及服务配置文件...

    获取(设置)应用程序返回值

    总结来说,程序返回值是衡量程序执行状态和结果的重要指标,通过适当的获取和设置方法,我们可以有效地调试代码,编写测试用例,以及优化程序的交互。理解如何在不同的编程语言和环境下操作返回值是每个开发者必备的...

    执行外部exe获取返回值

    在IT领域,执行外部exe(可执行文件)并获取返回值是常见的系统集成或自动化测试中的操作。这里的“返回值”通常指的是程序执行后通过特定方式返回的状态或结果,这有助于开发者了解程序运行是否成功或者出现了什么...

    Junit测试Void方法

    然而,对于返回类型为 `void` 的方法,由于其没有显式的返回值,传统的 Junit 断言方法(如 `assertEquals`)无法直接应用于这类方法的测试。本文将详细介绍如何使用 Junit 测试 `void` 类型的方法,并提供一个具体...

    java 形参和返回值练习

    `Abstract`关键字在Java中用于定义抽象类,抽象类可以包含抽象方法(没有实现的方法)。在描述中提到的“抽象类名作为返回值的案例”,可能是指某个方法返回一个抽象类类型的引用。这允许返回任何实现了该抽象类的...

    Android单元测试的小例子

    7. **Robolectric**:对于那些需要在没有实际Android环境的情况下运行的单元测试,Robolectric是一个很好的选择。它模拟了Android系统的大部分功能,使测试可以在Java虚拟机上运行。 8. **Testing Best Practices**...

    实现进行单元测试时可以测试单一测试方法

    `assertEquals`断言用于验证`add`方法的返回值是否与预期相符。 对于Python,我们可以使用unittest库进行单元测试。同样,我们需要定义一个测试类,包含针对目标方法的测试方法。以下是如何测试一个简单的加法函数...

    电信设备-一种BMC+OEM命令返回值与固定信息比对的自动化测试方法.zip

    标题和描述中提到的“BMC+OEM命令返回值与固定信息比对的自动化测试方法”涉及到的是一个专门针对服务器基础管理控制器(BMC)和原始设备制造商(OEM)指令的测试策略。这个方法旨在提高测试效率,减少人为错误,并...

    有返回值的线程

    在Java中,`Thread`类是用于创建新线程的基础类,但它的`run()`方法并不支持返回值。如果我们需要线程返回结果,可以使用`Callable`接口,它定义了一个`call()`方法,该方法可以返回一个`V`类型的值。下面是一个简单...

    你清楚Arrays.binarySearch()方法的返回值吗?

    虽然文件内容没有给出,但通常情况下,它可能包含一个或多个测试用例,展示了如何在实际代码中调用`Arrays.binarySearch()`方法。例如,它可能创建一个排序后的数组,然后搜索一个特定元素并打印返回值。为了更深入...

    测试用例设计方法

    测试用例应覆盖接口的输入参数、返回值、异常处理和协议一致性等方面。 7. **性能场景设计**: 性能测试用例设计考虑系统的负载、压力和稳定性,模拟真实用户的行为,例如并发用户数量、请求频率、长时间运行的...

    vc对cmd命令行返回值监测

    总的来说,VC对cmd命令行返回值的监测是软件开发和自动化测试中的常见操作,它可以帮助我们更好地控制程序流程,实现与系统或第三方工具的交互,提升工作效率。而管道的使用则提供了命令间数据传递的能力,增强了...

    vb操作cmd命令行读取返回值

    `DOS命令行.exe`可能是一个编译后的可执行文件,用于演示或测试CMD命令行的使用。`Form1.frm`和`.frx`是VB窗体的定义和资源文件,可能包含一个界面用于输入CMD命令并显示返回结果。`MSSCCPRJ.SCC`是版本控制的配置...

    junit参数化测试的使用方法

    4. **为测试类声明一个使用注解** `org.junit.runners.Parameterized.Parameters` **修饰的,返回值为** `java.util.Collection` **的公共静态方法**,并在该方法中初始化所有需要测试的参数对。 5. **编写测试方法*...

Global site tag (gtag.js) - Google Analytics