在Java中做单元测试

发表于:2018-9-19 10:40

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

 作者:ly-bnu    来源:博客园

  单元测试是发现和解决Bug的重要途径之一。
  如何在IDEA(Java的一款IDE)快速做单元测试呢?
  1. 在写好的类中,按ctrl+shift+T,会出现以下对话框,选择好要进行测试的类,如ArrayStack。
   
  2. 创建新的测试
   
  3.选择测试框架以及要测试的函数
  常用的测试框架为Junit4import org.junit.Assertimport org.junit.Test;
  import java.util.Stack;
  import java.util.Random;
  import static org.junit.Assert.*;
  public class ArrayStackTest {
  private Stack<Integer> stack;
  private ArrayStack<Integer> array;
  public void produce_data() {
  Random random = new Random();
  int rand_len_push = random.nextInt(Integer.MAX_VALUE);
  stack = new Stack<>();
  array = new ArrayStack<>(rand_len_push);
  System.out.println(String.format("rand_len is %d", rand_len_push));
  for (int i = 0; i < rand_len_push-5; i++) {
  int rand_num = random.nextInt(Integer.MAX_VALUE);
  stack.push(rand_num);
  array.push(rand_num);
  }
  for (int i = 0; i < rand_len_push-10; i++) {
  int rand_num = random.nextInt(Integer.MAX_VALUE);
  stack.push(rand_num);
  array.push(rand_num);
  }
  }
  @Test
  public void getSize() {
  for (int i = 0; i < 10000; i++) {
  produce_data();
  Assert.assertEquals(stack.size(), array.getSize());
  }
  }
  @Test
  public void getCapacity() {
  for (int i = 0; i < 10000; i++) {
  produce_data();
  Assert.assertEquals(stack.capacity(), array.getCapacity());
  }
  }
  @Test
  public void isEmpty() {
  for (int i = 0; i < 10000; i++) {
  produce_data();
  Assert.assertEquals(stack.empty(), array.isEmpty());
  }
  }
  @Test
  public void push() {
  Random random = new Random();
  for (int i = 0; i < 10000; i++) {
  produce_data();
  int rand_time = random.nextInt(Integer.MAX_VALUE);
  for (int j = 0; j < rand_time ; j++) {
  int rand_num = random.nextInt(Integer.MAX_VALUE);
  stack.push(rand_num);
  array.push(rand_num);
  }
  Assert.assertEquals(stack.peek(), array.peek());
  }
  }
  @Test
  public void pop() {
  Random random = new Random();
  for (int i = 0; i < 10000; i++) {
  produce_data();
  int rand_time = random.nextInt(Integer.MAX_VALUE);
  for (int j = 0; j < stack.size()-rand_time; j++) {
  stack.pop();
  array.pop();
  }
  stack.pop();
  array.pop();
  Assert.assertEquals(stack.peek(), array.peek());
  }
  }
  }


  4.运行
  其他函数都通过了单元测试,而getCapacity函数没有通过,这是由于官方库中的容量和实现的栈的容量不一致,这是正确的。
   
   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号