1.Junit单元测试

  1.1 测试分类

    1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
    2. 白盒测试:需要写代码的。关注程序具体的执行流程。

  Junit使用:白盒测试

    步骤:

      1. 定义一个测试类(测试用例)

        建议:
          测试类名:被测试的类名Test
          包名:xxx.xxx.xx.test

      2. 定义测试方法:可以独立运行

        建议:

          方法名:test测试的方法名 testAdd()

          返回值:void

          参数列表:空参

      3. 给方法加@Test

      4. 导入junit依赖环境

      

  判定结果:
    红色:失败
    绿色:成功
    一般我们会使用断言操作来处理结果
      Assert.assertEquals(期望的结果,运算的结果);

  补充:
    @Before:
      修饰的方法会在测试方法之前被自动执行
    @After:
      修饰的方法会在测试方法执行之后自动被执行

2.注解

  2.1 概述

    定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

    区别:

      注解:说明程序的。给计算机看的

      注释:用文字描述程序的。给程序员看的

  2.2 作用分类

    ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】

    ②代码分析:通过代码里标识的注解对代码进行分析【使用反射】
    ③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】

  2.3 JDK中预定义的一些注解

    @Override :检测被该注解标注的方法是否是继承自父类(接口)的

    @Deprecated:该注解标注的内容,表示已过时
    @SuppressWarnings:压制警告
      一般传递参数all @SuppressWarnings("all")

  2.4 自定义注解

    格式:

1 元注解
2 public @interface 注解名称{
3 属性列表;
4 }

    本质:

      注解本质上就是一个接口,该接口默认继承Annotation接口

1 public interface MyAnno extends java.lang.annotation.Annotation {……}

    属性:接口中的抽象方法

      要求:

        1. 属性的返回值类型有下列取值

          基本数据类型
          String
          枚举
          注解
          以上类型的数组

        2. 定义了属性,在使用时需要给属性赋值

          1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。

          2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。

          3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略。

    元注解:用于描述注解的注解

      @Target:描述注解能够作用的位置

        ElementType取值:

          TYPE:可以作用于类上

          METHOD:可以作用于方法上
          FIELD:可以作用于成员变量上

      @Retention:描述注解被保留的阶段

        @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到

      @Documented:描述注解是否被抽取到api文档中

      @Inherited:描述注解是否被子类继承

Calculator类

 1 package com.zhiy.Calculator;
2
3 public class Calculator {
4 @test
5 public void add() {
6 System.out.println(1 + 0);
7 }
8
9 @test
10 public void sub() {
11 System.out.println(1 - 0);
12 }
13
14 @test
15 public void mul() {
16 System.out.println(1 * 0);
17 }
18
19 @test
20 public void div() {
21 System.out.println(1 / 0);
22 }
23 }

注解类

 1 package com.zhiy.Calculator;
2
3 import java.lang.annotation.ElementType;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 import java.lang.annotation.Target;
7
8 @Target({ElementType.METHOD})
9 @Retention(RetentionPolicy.RUNTIME)
10 public @interface test {
11 }

CalculatorTest类

 1 package com.zhiy.Calculator;
2
3 import java.io.BufferedWriter;
4 import java.io.File;
5 import java.io.FileWriter;
6 import java.io.IOException;
7 import java.lang.reflect.InvocationTargetException;
8 import java.lang.reflect.Method;
9
10 public class CalculatorTest {
11 public static void main(String[] args) throws IOException {
12 int num = 0;
13 File file = new File("Jfanshe\\bug.txt");
14 BufferedWriter bw = new BufferedWriter(new FileWriter(file));
15
16 Calculator c = new Calculator();
17
18 Class cls = c.getClass();
19
20 Method[] methods = cls.getMethods();
21 for (Method method : methods){
22 if (method.isAnnotationPresent(test.class)){
23 try {
24 method.invoke(c);
25 } catch (Exception e) {
26 num++;
27 bw.write(method.getName()+"方法出现异常");
28 bw.newLine();
29 bw.write("异常名叫:"+e.getCause().getClass().getSimpleName());
30 bw.newLine();
31 bw.write("异常原因:"+e.getCause().getMessage());
32 bw.newLine();
33 bw.write("--------------------");
34 }
35 }
36 }
37 bw.newLine();
38 bw.write("本次测试共出现"+num+"个Bug");
39 bw.flush();
40 bw.close();
41 }
42 }

JavaSE25-Junit&注解的更多相关文章

  1. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  2. JUnit注解

    在本节中,我们将提到支持在JUnit4基本注释,下表列出了这些注释的概括: 注解 描述 @Testpublic void method() 测试注释指示该公共无效方法它所附着可以作为一个测试用例. @ ...

  3. 在Spring使用junit注解进行单元测试

    在Spring中可以使用junit配合注解进行单元测试 一.常用注解 1.@RunWith(SpringJUnit4ClassRunner.class),让测试运行于spring测试环境2.@Cont ...

  4. Spring系列之新注解配置+Spring集成junit+注解注入

    Spring系列之注解配置 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率 你本来要写一段很长的代码来构造一个 ...

  5. JUnit单元测试&注解

    ①测试方法上必须使用@Test进行修饰 ②测试方法必须使用public void 进行修饰,不能带任何的参数 ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开 ④测试类所在的包 ...

  6. Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. ...

  7. 在eclipse之中使用Junit

    使用Junit单位测试,能够一定程度上减小项目bug的产生.很多时候,我们都是在main函数里面单独去测试一个方法,这样的测试非常不方便.使用Junit可以是测试单位和项目代码分离,一次性测试多个方法 ...

  8. Java---JUnita、注解与类加载器详解以及实例

    JUnit软件测试技术(工具) 在项目中建立专门用户测试的包结构. 在Junit中,通过@Test注解,可以运行一个方法. ★ Junit注解说明 使用了@Test注解应该满足以下条件: 1) 必须是 ...

  9. 使用 JUnit 进行单元测试 - 教程

    tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit   目录 tanyuanji@126. ...

  10. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

随机推荐

  1. [原题复现]百度杯CTF比赛 十月场 WEB EXEC(PHP弱类型)

    简介  原题复现:  考察知识点:PHP弱类型.  线上平台:https://www.ichunqiu.com/battalion(i春秋 CTF平台) 过程 看源码发现这个 vim泄露  下方都试了 ...

  2. 思维导图哪款好用?怎么借助MindManager 做旅游计划

    世界那么大,想不想去看看!想不想来一场说走就走的旅行?尤其是在新冠的笼罩下, 2020年已经过去四分之三,国内疫情已经基本得到了控制,接下来的日子里你想出门好好玩玩吗? 说走就走的旅游虽然美好,但是你 ...

  3. kube-flannel.yml 文件

    ---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: flannelrules: - api ...

  4. eslint报错: Unexpected any value in conditional. An explicit comparison or type cast is required

    原代码: record.modifiedTime? 修改后代码:typeof record.modifiedTime !== 'undefined' ?   (isAddType === true ? ...

  5. 蓝桥杯——字母阵列(2018JavaC组第3题)

    字母阵列(18JavaC3) 标题:字母阵列 仔细寻找,会发现:在下面的8x8的方阵中,隐藏着字母序列:"LANQIAO". SLANQIAO ZOEXCCGB MOAYWKHI ...

  6. 编程C语言进阶篇——自定义数据类型:共同体

    什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...

  7. std::unique_ptr使用incomplete type的报错分析和解决

    Pimpl(Pointer to implementation)很多同学都不陌生,但是从原始指针升级到C++11的独占指针std::unique_ptr时,会遇到一个incomplete type的报 ...

  8. DevOps Workshop | 代码管理入门:基于代码扫描实现团队效率提升

    CODING「DevOps Workshop 学习营地」持续火热进行中! 在这里,你可以轻松实践 DevOps 全流程.体验高效的云端开发.赢取精美礼品--第二期大奖「戴尔 U2718Q 显示器」将于 ...

  9. NTML

     NTLM:         1.客户端向服务器发送一个请求,请求中包含明文的登陆用户名.在服务器中已经存储了登陆用户名和对应的密码hash         2.服务器接收到请求后,NTLMv2协议下 ...

  10. DataTable 将一列转为List

    c# linq用起来特方便,因此我们习惯性的用list来操作. 这里我们将 DataTable 一列转为List: List<T> homeworkIdList = (from r in ...