Java单元测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java单元测试相关的知识,希望对你有一定的参考价值。

二填空题
1. java 中用 关键字申明包。
2.整型数据基本类型int所对应的封装器类是 。
3.产生一个区间[20,100] 内的随机整数的语句是 。
4.下面程序运行时在命令行输入MyProg me you he she。程序的运行结果是 。
class MyProg
public static void main(String args[])
for(int i=0;i<args.length;i++)
if(i%2==0) System.out.print(args[i]+" ");
System.out.println();



三.编一程序,从键盘输入一个字符串,将其倒序输出。比如:
输入”Hello Java”, 输出为:”avaJ,olleH”.

四、编一程序。要求
1 将自己的学号、姓名、性别写入到目录d:\Personal下的文件Info.dat中。
2 将文件Info.dat中的数据显示在屏幕上。

参考技术A 你的理解是正确的。 通常针对一个方法会写几组这样的 带入值,复杂的方法可能更多。实际使用当中,一个方法的运行会有很多依赖关系 ,不如 需要上下文环境,需要 HTTP Requst ,Response ,数据库连接等。 如果自己写的话太复杂,所以就有 很多插件来帮忙解决外部问题。

Junit 是JAVA单元测试使用最多的插件。其他的也还有很多,基本和 Junit的思想是一样的。
请采纳答案,支持我一下。本回答被提问者采纳
参考技术B   单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。
  单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。
  一般来说,单元测试任务包括
  接口功能测试:用来保证接口功能的正确性。
  局部数据结构测试(不常用):用来保证接口中的数据结构是正确的
  比如变量有无初始值
  变量是否溢出
  边界条件测试
  比如对于Math.sqrt,给出n^2-1,和n^2+1的边界
  空集合
  对集合的大小应用“数值变量”的边界
  调整次序:升序、降序
  引用“字符变量”的边界
  空字符串
  对字符串长度应用“数值变量”的边界
  主要边界:最小值,最大值,无穷大(对于DOUBLE等)
  溢出边界(期望异常或拒绝服务):最小值-1,最大值+1
  临近边界:最小值+1,最大值-1
  变量没有赋值(即为NULL)
  变量是数值(或字符)
  变量是字符串
  变量是集合
  变量有规律
  所有独立执行通路测试:保证每一条代码,每个分支都经过测试
  Cobertura:语句覆盖
  Emma: Eclipse插件Eclemma
  语句覆盖:保证每一个语句都执行到了
  判定覆盖(分支覆盖):保证每一个分支都执行到
  条件覆盖:保证每一个条件都覆盖到true和false(即if、while中的条件语句)
  路径覆盖:保证每一个路径都覆盖到
  代码覆盖率
  相关软件
  各条错误处理通路测试:保证每一个异常都经过测试
  JUNIT
  JUnit是Java单元测试框架,已经在Eclipse中默认安装。目前主流的有JUnit3和JUnit4。JUnit3中,测试用例需要继承TestCase类。JUnit4中,测试用例无需继承TestCase类,只需要使用@Test等注解。
  Junit3
  先看一个Junit3的样例
  // 测试java.lang.Math
  // 必须继承TestCase
  public class Junit3TestCase extends TestCase
  public Junit3TestCase()
  super();
  
  
  // 传入测试用例名称
  public Junit3TestCase(String name)
  super(name);
  
  
  // 在每个Test运行之前运行
  @Override
  protected void setUp() throws Exception
  System.out.println("Set up");
  
  // 测试方法。
  // 方法名称必须以test开头,没有参数,无返回值,是公开的,可以抛出异常
  // 也即类似public void testXXX() throws Exception
  public void testMathPow()
  System.out.println("Test Math.pow");
  Assert.assertEquals(4.0, Math.pow(2.0, 2.0));
  
  
  public void testMathMin()
  System.out.println("Test Math.min");
  Assert.assertEquals(2.0, Math.min(2.0, 4.0));
  
  
  // 在每个Test运行之后运行
  @Override
  protected void tearDown() throws Exception
  System.out.println("Tear down");
  
  
  
  
  如果采用默认的TestSuite,则测试方法必须是public void testXXX() [throws Exception] 的形式,并且不能存在依赖关系,因为测试方法的调用顺序是不可预知的。
上例执行后,控制台会输出
  Set up
  Test Math.pow
  Tear down
  Set up
  Test Math.min
  Tear down
  
  
  从中,可以猜测到,对于每个测试方法,调用的形式是:
  testCase.setUp();
  testCase.testXXX();
  testCase.tearDown();
  
  
  运行测试方法
  在Eclipse中,可以直接在类名或测试方法上右击,在弹出的右击菜单中选择Run As -> JUnit Test。
在Mvn中,可以直接通过mvn test命令运行测试用例。
也可以通过Java方式调用,创建一个TestCase实例,然后重载runTest()方法,在其方法内调用测试方法(可以多个)。
  TestCase test = new Junit3TestCase("mathPow")
  // 重载
  protected void runTest() throws Throwable
  testMathPow();
  ;
  ;
  test.run();
  
  
  更加便捷地,可以在创建TestCase实例时直接传入测试方法名称,JUnit会自动调用此测试方法,如
  TestCase test = new Junit3TestCase("testMathPow");
  test.run();

java怎么做单元测试,紧急!

  单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如可以测试一个类,或者一个类中的一个方法。
  以下是测试用例类的基本结构:
  public class HelloWorldTest extends TestCase
  
  
  /*
  * 每次用例执行前要执行的初始化方法
  */
  protected void setUp( ) throws Exception
  
  super.setUp();
  
  
  /*
  * 每次用例执行后要执行的清除功能
  */
  protected void tearDown( ) throws Exception
  
  super.tearDown();
  
  
  /*
  * 一个测试方法,在其中实现对被测单元的调用,并验证
  */
  public final void testCalculate( )
  
  //TODO 实现 calculate()。
  
  
  
参考技术A java很多概念都和C++一样,所以看core java的时候也没有字斟句酌,很多地方都是跳着看的。大概了解了一些细节,比staticmethod,final域等。印象比较深的是static变量,一个class有一个static变量,而其衍生的object都是通用这个变量的。在下面的例子中nextId就是如此了,呵呵,这样来定义id,估计也只是教科书用的,工业上都是采用数据库来处理了。后面提一下,java的单元测试挺有意思的,每一个类都可以整个main函数,就是一个文件里面可以存在多个main函数,要测啥就直接java一下那个类名就可以了,例子如下:public class StaticTestpublic static void main(String[] args)Employee[] staff = new Employee[3];staff[0] = new Employee("Tom", 40000);staff[1] = new Employee("Dick", 60000);staff[2] = new Employee("Harry", 65000);for (Employee e : staff)e.setId();System.out.println("name=" + e.getName() + ", id=" + e.getId() +", salary=" + e.getSalary());int n = Employee.getNextId();System.out.println("Next available id=" + n);class Employeepublic Employee(String n, double s)name = n;salary = s;id = 0;public String getName()return name;public double getSalary()return salary;public int getId()return id;public void setId()id = nextId;nextId++;public static int getNextId()return nextId;public static void main(String[] args)Employee e = new Employee("Harry", 50000);System.out.println(e.getName() + " " + e.getSalary());private String name;private double salary;本回答被提问者采纳

以上是关于Java单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Spring + EasyMock做Java单元测试

Java应用XVIII在 Java 中使用JUnit5进行单元测试和自动化测试

[单元测试]Java单元测试,基于Mockito的第一次尝试

Java单元测试

java 面向对象(十七):单元测试方法

JUnit单元测试