Junit测试

package com.hyxt;

import com.hyxt.cash.core.repository.ShopsInfoRepository;
import com.hyxt.cash.core.repository.ShopsInfoTempRepository;
import com.hyxt.cash.core.repository.ShopsLoginRepository;
import com.hyxt.cash.provider.Application;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Created by huwei
 * Date:2015/9/15
 * Time:11:39
 */

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class TestShopsInfoServiceImpl {
    private static final Logger logger = LoggerFactory.getLogger(TestShopsInfoServiceImpl.class);
    @Autowired
    private ShopsInfoRepository shopsInfoRepository;
    @Autowired
    private ShopsInfoTempRepository shopsInfoTempRepository;
    @Autowired
    private ShopsLoginRepository shopsLoginRepository;
   /* @Test
    public void  getShopsInfo() {
        String phone="18814450543";
        ShopsInfoEntity shopsInfoEntity = shopsInfoRepository.findOne("mobile_phone=?1", phone);
        System.out.println("shopsInfoEntity ==" + shopsInfoEntity.getShopId() + " : storeId : == " + shopsInfoEntity.getStoreId());
        ShopsInfoVo shopsInfoVo = new ShopsInfoVo();
        BeanUtils.copyProperties(shopsInfoEntity, shopsInfoVo);
        System.out.println("vo.shopsInfoEntity ==" + shopsInfoVo.getShopId() + " : vo.storeId : == " + shopsInfoVo.getStoreId());

    }*/
   /* @Test
    public void  queryShopsInfo() {
        String openId="WEIXIN594986584545";
        StringBuffer sql = new StringBuffer();
        ShopsInfoVo shopsInfoVo = new ShopsInfoVo();
        sql.append("select distinct store_id from shops_login t where status ='1' and t.valid_date >= curdate() and open_id ='"+openId+"'");
        String storeId = (String)shopsLoginRepository.nativeQuery4Object(sql.toString());
        ShopsInfoEntity entity = shopsInfoRepository.findOne("store_id=?1", storeId);
        BeanUtils.copyProperties(entity, shopsInfoVo);

    }*/

}

### JUnit 测试的相关信息与使用方法 #### 1. JUnit 的基本概念 JUnit 是一个开源的 Java 单元测试框架,最初由 Erich Gamma 和 Kent Beck 编写。它是一种白盒测试工具,允许开发者编写自动化测试用例来验证代码的功能是否正确[^1]。JUnit 提供了一套规则和约定,开发者可以通过继承特定类或实现接口来编写符合框架要求的测试代码。 #### 2. JUnit 的核心特性 JUnit 支持以下关键功能: - **断言(Assertions)**:用于验证代码的实际输出是否与预期结果一致。 - **测试运行器(Test Runners)**:负责执行测试用例并报告测试结果。 - **注解(Annotations)**:如 `@Test`、`@Before`、`@After` 等,用于标记测试方法和生命周期方法[^1]。 #### 3. JUnit 的配置与使用 在使用 JUnit 进行单元测试之前,需要完成以下步骤: - 下载 JUnit 包并将其添加到项目的类路径中[^1]。 - 编写测试类,通常以 `Test` 结尾,并确保每个测试方法都使用 `@Test` 注解标记。 - 使用断言方法(如 `assertEquals`、`assertTrue` 等)验证代码行为。 以下是一个简单的 JUnit 测试示例: ```java import static org.junit.Assert.*; import org.junit.Test; public class CalculatorTest { @Test public void testAddition() { Calculator calculator = new Calculator(); int result = calculator.add(2, 3); assertEquals(5, result); // 验证加法结果是否为 5 } } ``` #### 4. JUnit 的最佳实践 为了提高单元测试的质量和效率,可以遵循以下最佳实践: - **保持测试独立性**:每个测试用例应独立运行,避免依赖其他测试的结果。 - **使用 Mock 对象**:通过模拟外部依赖(如数据库或服务),确保测试专注于代码逻辑本身[^2]。 - **覆盖边界条件**:测试应包括正常情况和异常情况,特别是输入值的边界条件。 - **定期运行测试**:将测试集成到持续集成(CI)流程中,确保每次代码更改后都能自动运行测试。 #### 5. 结合 Mockito 进行单元测试 Mockito 是一个流行的 Java 框架,用于创建 Mock 对象。它可以与 JUnit 结合使用,简化对外部依赖的模拟。例如,以下代码展示了如何使用 Mockito 验证方法调用次数: ```java import static org.mockito.Mockito.*; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; public class UserServiceTest { private UserService mockUserService; @Before public void setUp() { mockUserService = mock(UserService.class); } @Test public void testAddMethodInvocation() { List<String> features = new ArrayList<>(); mockUserService.add("实验", "123", features); verify(mockUserService, times(1)).add("实验", "123", features); // 验证 add 方法被调用一次 verify(mockUserService, times(1)).add(anyString(), anyString(), anyList()); // 使用通配符验证 } } ``` #### 6. 自动化测试的实现 JUnit 可以与其他工具结合使用,实现测试的自动化。例如,在团队开发中,可以采用以下模式: - **版本控制**:使用 CVS 或 Git 管理代码版本。 - **项目管理**:通过 Ant 或 Maven 配置构建脚本,自动运行测试用例[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值