本文共 4290 字,大约阅读时间需要 14 分钟。
最近在看Junit,正好上一篇写了螺旋矩阵算法,顺便写个测试代码。
创建Junit,我用的是eclipse,它自带Junit。所以比较简单,不需要安装
方法就是先右键java项目,选Build Path,AddLibraries,打开之后选Junit。
然后你会发现在类里面多了个luoxuanTest,然后编写代码。因为用Junit测试需要用一个返回值,所以我稍微改了一下luoxuan.java的代码,加了一个返回值。
luoxuan.java的代码:
package news;import java.util.Scanner;public class luoxuan { public static final int NMAX = 100; public static void main(String [] arg){ /* * 编程输出螺旋方阵.螺旋方阵是指将从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。如4阶的螺旋方阵形式如下:1 2 3 412 13 14 511 16 15 610 9 8 7要求:1)从键盘输入螺旋方阵的阶数 2)代码有注释 3)对算法的思路给出文字描述 */ System.out.println("请输入螺旋矩阵阶数:"); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[][] arrays=new int[NMAX][NMAX]; int i,j; for(i=0;iz) break; arrays[i][j] = ou++; } for(j--,i++;i z) break; arrays[i][j] = ou++; } for(i--,j--;j>=c;j--)//从右到左 { if(ou>z) break; arrays[i][j] = ou++; } for(j++,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou++; } c++; } //System.out.println(arrays[2][3]); return arrays; } static int[][] getluoxuan11(int [][]arrays,int n) { // System.out.println("从矩阵的左上角开始从数字的最大值开始螺旋"); int c=0,i,j; int z = n*n; int ou=z; while(ou>=1) { i=0; j=0; for(i+=c,j+=c;j z) break; arrays[i][j] = ou--; } for(j--,i++;i z) break; arrays[i][j] = ou--; } for(i--,j--;j>=c;j--)//从右到左 { if(ou>z) break; arrays[i][j] = ou--; } for(j++,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou--; } c++; } return arrays; } static int[][] getluoxuan2(int [][]arrays,int n) {// System.out.println("从矩阵的右上角开始从数字1开始螺旋:"); int c=0,i,j; int z = n*n; int ou=1; while(ou<=z) { i=0; j=0; for(i=c,j=n-c-1;j>=c;j--) //从右到左 { if(ou>z) break; arrays[i][j] = ou++; } for(j++,i++;i z) break; arrays[i][j] = ou++; } for(i--,j++;j z) break; arrays[i][j] = ou++; } for(j--,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou++; } c++; } return arrays; } static int[][] getluoxuan22(int [][]arrays,int n) { // System.out.println("从矩阵的右上角开始从矩阵的最大值开始螺旋:"); int c=0,i,j; int z = n*n; int ou=z; while(ou>=1) { i=0; j=0; for(i=c,j=n-c-1;j>=c;j--) //从右到左 { if(ou>z) break; arrays[i][j] = ou--; } for(j++,i++;i z) break; arrays[i][j] = ou--; } for(i--,j++;j z) break; arrays[i][j] = ou--; } for(j--,i--;i>=c+1;i--)//从下到上 { if(ou>z) break; arrays[i][j] = ou--; } c++; } return arrays; } }
测试代码:luoxuanTest.java:
package news;import static org.junit.Assert.*;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;public class luoxuanTest { public static final int[][] ARRAYS=new int[100][100]; public static final int N=4; @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("this is setUpBeforeClass()..."); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("this is tearDownAfterClass()..."); } @Before public void setUp() throws Exception { int ii,jj; for(ii=0;ii<100;ii++) for(jj=0;jj<100;jj++) ARRAYS[ii][jj] = 0; System.out.println("this is setUp()..."); } @After public void tearDown() throws Exception { System.out.println("this is tearDown()..."); }/* @Test public final void testMain() { fail("Not yet implemented"); // TODO } @Test public final void testDisplay() { fail("Not yet implemented"); // TODO }*/ @Test public final void testGetluoxuan1() { System.out.println("测试最小值在左上角的算法是否正确:"); int result = (luoxuan.getluoxuan1(ARRAYS, N))[2][3]; assertEquals("测试最小值在左上角的算法不正确",6, result); } @Test public final void testGetluoxuan11() { System.out.println("测试最大值在左上角的算法是否正确:"); int result = (luoxuan.getluoxuan11(ARRAYS, N))[2][3]; assertEquals("测试最大值在左上角的算法不正确",11, result); } @Test public final void testGetluoxuan2() { System.out.println("测试最小值在右上角的算法是否正确:"); int result = (luoxuan.getluoxuan2(ARRAYS, N))[3][2]; assertEquals("测试最小值在右上角的算法不正确",9, result); } @Test public final void testGetluoxuan22() { System.out.println("测试最大值在右上角的算法是否正确:"); int result = (luoxuan.getluoxuan22(ARRAYS, N))[3][2]; assertEquals("测试最大值在右上角的算法不正确",8, result); }}然后发现是绿色的,说明正确。