Java如何编写无返回值的方法的单元测试

发表于:2021-10-12 09:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搬砖男子汉    来源:CSDN

  有一个方法,他的返回值是void,也就是说,我们无法对方法的返回值进行断言。
  但是,既然这个方法是无返回值的方法,那么他一定修改了对象的状态(成员变量),或是进行了输入输出,向某个窗口发送消息,与某个进程通讯,。
  总之,他是有副作用的。
  如果没有任何副作用,并且无返回值,那么这个方法存在也是没有意义的,可以去掉。那么我们就可以针对产生的副总用来进行断言。
  举一个例子
  待测试的类:
  public class HowHandleVoidMethodJUnit {
      private String name = "helloworld";
   
      public void voidMethod() {
          this.name = "一个返回void的方法如何进行测试???";
      }
  }
  测试类:
  import org.junit.Test;
   
  import java.lang.reflect.Field;
   
  import static org.junit.Assert.*;
   
  public class HowHandleVoidMethodJUnitTest {
      @Test
      public void testVoidMethod() throws Exception {
          HowHandleVoidMethodJUnit howHandleVoidMethodJUnit = new HowHandleVoidMethodJUnit();
          Class<?> clazz = howHandleVoidMethodJUnit.getClass();
          Field field = clazz.getDeclaredField("name");
          field.setAccessible(true);
          String string = (String) field.get(howHandleVoidMethodJUnit);
   
          assertEquals("helloworld", string);
          howHandleVoidMethodJUnit.voidMethod();
   
          String string1 = (String) field.get(howHandleVoidMethodJUnit);
          assertEquals("一个返回void的方法如何进行测试???",string1);
      }
   
  }
  在被测方法的前后,我们去断言成员变量的值,也就是对象的状态。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号