疯狂阿凯 2022-01-06 18:14 采纳率: 33.3%
浏览 24

maven搭建的ssm插入数据时候报错不回滚,请问这是哪里出了问题?(语言-java)


package com.ak.test;

import com.ak.mapper.SysUserMapper;
import com.ak.pojo.SysUser;
import com.ak.service.UserService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.notification.RunListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml",
        "classpath:applicationContext-dao.xml",
        "classpath:applicationContext-tx.xml"})
public class MybatisTest {
    @Autowired
//    SysUserMapper mapper;
    UserService service;
    @Test
    public void Test(){
//        long count = mapper.countByExample(null);
//        Assert.assertEquals(0,count);

        List<SysUser> users = new ArrayList<SysUser>();
        for (int i = 14; i < 16; i++) {
            SysUser user = new SysUser();
            user.setLoginAccount("admin"+i);
            user.setLoginPwd("admin"+i);
            user.setRealName("管理"+i);
            user.setFlag(i%2);
            users.add(user);
        }
        boolean status = service.saveUsers(users);
        Assert.assertTrue(status);
    }
}
package com.ak.impl;

import com.ak.mapper.SysUserMapper;
import com.ak.pojo.SysUser;
import com.ak.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import java.util.List;

@Transactional
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private SysUserMapper mapper;
//    private DataSourceTransactionManager transactionManager;      //事务管理器
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveUsers(List<SysUser> users) {
        //以下是手动开启事务 发现怎么样都会自动提交,所以干脆用手动提交代码
//        1.获取事务定义
//        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
//        //2.设置事务隔离级别,开启新事务
//        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
//        //3.获得事务状态
//        TransactionStatus status = transactionManager.getTransaction(def);
        boolean status = true;
        int flag = 0;
        for (SysUser user : users) {
            flag+=mapper.insertSelective(user);
            int a = 1/0;
        }
        return flag==users.size()?true:false;
    }
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/tool"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd
          http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd">
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:advice id="tx" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*"   propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="select*" read-only="true"/>
            <tx:method name="query*" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="p1" expression="execution(* com.ak.service.*.*.*(..))"/>
        <aop:advisor advice-ref="tx" pointcut-ref="p1"></aop:advisor>
    </aop:config>
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

</beans>


Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project ssm-web: There are test failures.

Please refer to F:\gitworkspace\ssm-parent\ssm-web\target\surefire-reports for the individual test results.

  • 写回答

1条回答 默认 最新

  • zhang.yao Java领域新星创作者 2022-01-06 19:12
    关注

    有些test失败了,你是不是 写的有测试类
    解决办法:

    1. 让所有测试类都能正常执行
    2. maven编译的时候跳过test
    评论

报告相同问题?

问题事件

  • 修改了问题 1月6日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办