11. Junit单元测试(@Test)+ 事务方法

文章目录

Junit单元测试(@Test)

pom依赖:

<!--单元测试-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!

11. Junit单元测试(@Test)+ 事务方法

失败的时候是红色:

11. Junit单元测试(@Test)+ 事务方法



事务

要么都做,要么都不做!比如银行转账问题

11. Junit单元测试(@Test)+ 事务方法

ACID原则:保证数据的安全

1. 搭建一个Navicat Premium环境

11. Junit单元测试(@Test)+ 事务方法

CREATE TABLE account(
   id INT PRIMARY KEY AUTO_INCREMENT,
   `name` VARCHAR(40),
   money FLOAT
);

INSERT INTO account(`name`,money) VALUES('A',1000);
INSERT INTO account(`name`,money) VALUES('B',1000);
INSERT INTO account(`name`,money) VALUES('C',1000);

2.在testTransaction类编写test方法:使用事务

11. Junit单元测试(@Test)+ 事务方法

    @Test
    public void test() {
        //配置信息
        //useUnicode=true&characterEncoding=utf-8 解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
        String username = "root";
        String password = "xxxxxx";

        Connection connection = null;

        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //2.连接数据库,代表数据库
            connection = DriverManager.getConnection(url, username, password);

            //3.通知数据库开启事务,false 开启
            connection.setAutoCommit(false);

            String sql = "update account set money = money-100 where name = 'A'";
            connection.prepareStatement(sql).executeUpdate();

            //制造错误
            //int i = 1/0;

            String sql2 = "update account set money = money+100 where name = 'B'";
            connection.prepareStatement(sql2).executeUpdate();

            connection.commit();//以上两条SQL都执行成功了,就提交事务!
            System.out.println("success");
        } catch (Exception e) {
            try {
                //如果出现异常,就通知数据库回滚事务
                connection.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

运行后:

11. Junit单元测试(@Test)+ 事务方法

//制造错误
int i = 1/0;

当取消这注释后,A-100后,事务回滚,数据安全
上一篇:typescript基础学习


下一篇:282. 石子合并