如何在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),我们将立即处理。