Junit3.8 初学

2024-08-30 03:58
文章标签 初学 junit3.8

本文主要是介绍Junit3.8 初学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一  前奏

Junit3.x系列基于反射。对测试类要求 必须继承junit.framework.TestCase这个抽象类。

对测试函数要求:

a) 函数名以test开头。

b) public +void + 没有参数+ 不会throws Exception


二 我的简单应用

   编写一个类ArrayOperator,实现一个方法getMaxElment(),该方法为找出一个int数组的最大值。 编写测试类ArrayTestCase,测试该方法getMaxElment()。


1)结构

     在工程build path中add libraries把Junit3 添加进去工程中。接着创建新的fold名为test。把测试类和源代码分离开是一个好做法。 注意技巧:将 被测试的类与测试类放在同一个包名下(尽管它们不在同一个文件夹中),这样在测试类中就不必再导包了。


2)代码


package com.sysu.junit3;public class ArrayOperator {public int getMaxElment(int[] args) throws Exception {if (args == null || args.length == 0)  //短路求值 ,若args.length == 0 放前,则当数组为空时,会抛出NullPointerException异常throw new Exception("not null.");int max = args[0];for (int i = 0; i < args.length; i++) {if (max < args[i])max = args[i];}return max;}
}

当数组指向null 时,条件判断结束,不会再执行args.length == 0  ,这是基于短路求值。例如eg :  

            expr1 && expr2    //若expr1计算后若为false,则不再计算expr2的值,因为该式肯定为false。否则,计算expr2的值。

            expr1 || expr2      //若expr1计算后若为true,则不再计算expr2的值,因为该式肯定为true。否则,计算expr2的值  。

短路求值 ,若args.length == 0 放前,则当数组为空时,会抛出NullPointerException异常


package com.sysu.junit3;import junit.framework.Assert;
import junit.framework.TestCase;public class ArrayTestCase extends TestCase {private ArrayOperator arrayCase = null;@Overrideprotected void setUp() throws Exception {   //重写setUp方法。它在每个测试函数前执行arrayCase = new ArrayOperator();}public void testGetMaxELMENT() {int max = 0;try {max = arrayCase.getMaxElment(new int[] { 23, 34, 1, 43, 43, 21, 4,34, -4, 0 });} catch (Exception e) {Assert.fail("error 1");  //正常情况下,程序无误情况下,不会执行catch中内容;否则,failure}Assert.assertEquals(43, max);  //Assert为TestCase父类,}public void testGetMaxELMENTwithException() {Throwable exception = null;int max = -6;try {max = arrayCase.getMaxElment(new int[] {});Assert.fail("error 2");   //正常情况下,程序无误情况下,会跳过该语句;否则,failure} catch (Exception e) {exception = e;}Assert.assertNotNull(exception);Assert.assertEquals(-6, max);Assert.assertEquals(Exception.class, exception.getClass());  //判断 抛出的异常是否和 预期的 异常 类型相同(即Class对象相同)Assert.assertEquals("not null.", exception.getMessage());}public void testCAseMAXelment3() {Throwable ex = null;int array[] = null;try {arrayCase.getMaxElment(array);Assert.fail();   //正常情况下,程序无误情况下,会跳过该语句;否则,failure} catch (Exception e) {ex = e;}Assert.assertNotNull(ex);Assert.assertEquals(Exception.class, ex.getClass());Assert.assertEquals("not null.", ex.getMessage());}
}

3)结果

通过了3个测试方法:


这篇关于Junit3.8 初学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119729

相关文章

Vue初学-简易计算器

最近在学习Vue的指令,做了一个简易计算器,比较适合刚入门的人参考学习。用到的知识点有: 1.插值表达式 2.v-model,双向绑定+、-、*、/、**等操作符 3.v-show,控制操作数2是否显示,乘方时不显示操作数2 4.methods选项,定义了calculate ()方法,实现各种运算 5.watch选项,监听selected的值的变化。 下面是程序的执行效果: 如果选择的是**乘

Mindspore 初学教程 - 3. Tensor 张量

张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在  n n n 维空间内,有  n r n^{r} nr 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。 r r r 称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 张量是一种特殊的数据结构,

Python 初学入门必会基础知识

引言 Python 是一种易学易用的编程语言,适用于各种应用场景,包括网站开发、数据分析、人工智能等。对于零基础的学习者来说,掌握 Python 编程语言是一个很好的起点。本文将详细介绍零基础学习 Python 所需的知识点,帮助初学者快速入门。 CSDN大礼包:《2024年最新全套学习资料包》免费分享 1.首先需要安装Python 学习 Python 的第一步是安装 Python

遗传算法Github初学

遗传算法的理论是根据达尔文进化论而设计出来的算法:人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因 遗传算法(genetic algorithm——GA)是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解依据某些适应

初学java——关于数组容易忽视的地方总结

1:静态初始化:有程序员显示指定每个数组的初始化,由系统决定数组的长度。      动态初始化:程序员只指定数组长度,由系统为数组元素分配初始值。 2:java数组变量是一种引用类型的变量,引用的是堆内存中数组对象,而不是栈内存中的数组变量。例如数组int[] A={1,2,3};int[] B={4,5,6};当执行下面语句时:A=B;则int[] A={4,5,6};引用数组A时,变量为数

初学流量分析

一、基本知识           比赛中提供一个包含流量数据的 PCAP 文件,有时候也会需要选手们先进行修复或重构传输文件后,再进行分析。     PCAP 这一块作为重点,复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是参赛者需要完成的工作。 总的来说有以下几个步骤 总体把握 协议分级端点统计过滤赛选 过滤语法Host,Protocol,contain

初学机器学习的方法及框架了解

程序员初学机器学习的四种方式 【机器学习实验】scikit-learn的主要模块和基本使用 28款GitHub最流行的开源机器学习项目 Python机器学习库scikit-learn实践 最好的Python机器学习库

初学GDB(2)

以The C Programming Language中1.9节的程序为例,试用了以下命令: 1.backtrace,简写bt,查看函数调用的顺序(函数调用栈的信息); 2.frame N,切换到栈编号为N的上下文中; 3.info frame,简写info f,查看当前函数调用的栈帧信息 ; 4.info locals,查看当前局部变量的值; 5.info args,查看当前函数参数的值; 6.

初学GDB(1)

以The C Programming Language 1.5.1节中的程序copy.c为例: #include <stdio.h>main(){int c;while ((c = getchar()) != EOF){putchar(c);}} 用gcc进行编译gcc -g copy.c -o copy,-g表示生成调试信息。 然后就可以用gdb进行调试了gdb copy -q,-q

【初学人工智能原理】【14】机器学习:最后一节课也是第一节课(完结)

前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 随着课程的结束,我们仿佛在知识的海洋中航行了很久,有时感觉收获颇丰,有时又觉得仍有许多未知。这就是本次课程的目的,通过最简单