`

Junit4 同时使用@Parameterized参数化测试和Spring容器

 
阅读更多
1 基类整合spring容器

package com.spring;

import org.junit.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestContextManager;

import com.SupplierJingBeanJsfFacade;


//@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-config.xml")
public class SpringTestBase {

@Autowired
public SupplierJingBeanJsfFacade consumer;

private TestContextManager testContextManager;

// 每次运行都会执行 与 @BeforeClass的区别
@Before
public void setUp() {
// 自动注解与@RunWith(SpringJUnit4ClassRunner.class) 效果一样
testContextManager = new TestContextManager(getClass());
try {
testContextManager.prepareTestInstance(this);
} catch (Exception e) {
e.printStackTrace();
}
}

public SupplierJingBeanJsfFacade getConsumer() {
return consumer;
}
}

2 子类,参数化测试



package com.spring;

import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import junit.framework.Assert;

@RunWith(Parameterized.class)
public class SupplierJingBeanJsfFacadeImplTest extends SpringTestBase {

private static Logger logger = Logger.getLogger(SupplierJingBeanJsfFacadeImplTest.class);

private KV param;
private String result;

@Parameters
public static List<Object[]> data() {
KV kv1 = new KV();
kv1.supplierId = 4512667L;
kv1.operType = 1;//1.关闭
KV kv2 = new KV();
kv2.supplierId = 4512667L;
kv2.operType = 2;//2.冻结
KV kv3 = new KV();
kv3.supplierId = 4512667L;
kv3.operType = 3;//3.解冻

return Arrays.asList(new Object[][] { { kv1, "0000" }, { kv2, "0000" }, { kv3, "0000" } });
}

public SupplierJingBeanJsfFacadeImplTest(KV param, String result) {
this.param = param;
this.result = result;
}

/**
*
* 2 在关闭状态下冻结,
* 3 在关闭状态下,进行解冻,报0005非冻结状态不可进行解冻
*/
@Test
public void operationStatus() {

SupplierJingBeanResult r = this.getConsumer().operationStatus(this.param.supplierId, this.param.operType);
Assert.assertEquals(this.result , r.getResultCode());

logger.error(ReflectionToStringBuilder.toString(r, ToStringStyle.MULTI_LINE_STYLE));
logger.error(ReflectionToStringBuilder.toString(r.getBuyBeansActivityVo(), ToStringStyle.MULTI_LINE_STYLE));
logger.error("------------------------------------------------------------");
}
}

class KV {
Long supplierId;
Integer operType;// 1.关闭 2.冻结 3.解冻
}

3 运行子类

进行junit测试,依赖类可以自动加载
分享到:
评论

相关推荐

    junit参数化测试的使用方法

    1. **为准备使用参数化测试的测试类指定特殊的运行器** `org.junit.runners.Parameterized`。 2. **为测试类声明几个变量**,分别用于存放期望值和测试所用数据。 3. **为测试类声明一个带有参数的公共构造函数**,...

    junit4测试jar包

    5. **参数化测试**:`@Parameterized`测试可以使用不同的参数多次运行同一个测试方法,这对于测试多种输入情况非常有用。 6. **超时测试**:`@Test(timeout = 1000)`可以设置测试方法的执行时间限制,超过设定时间...

    单元测试利器JUnit4

    JUnit4相较于早期版本引入了许多改进,如注解、参数化测试和测试套件等,使得测试代码更加简洁和灵活。 2. 注解(Annotations): JUnit4的核心特点是广泛使用注解,这使得测试类和方法的声明更清晰。例如: - `@...

    Junit5.7.2离线jar

    @ParameterizedTest支持参数化的测试,可以从数据源获取多组输入,执行相同测试逻辑但使用不同参数。 在Spring框架的上下文中,JUnit5可以很好地与Spring Test集成,允许我们在测试中注入依赖并管理Spring应用程序...

    Spring_Junit

    9. **参数化测试**:JUnit的`@Parameterized`注解允许我们进行参数化的测试,即同一测试用例可以针对多个输入参数运行。 10. **异步测试**:对于处理异步任务的场景,Spring Test提供了`@Async`和`@AsyncTest`注解...

    Junit测试 简单用例

    1. 创建测试类:在Junit中,测试类通常继承自`junit.framework.TestCase`,但更现代的版本如Junit 4和5推荐使用`@RunWith(JUnitPlatform.class)`或者`@ExtendWith(SpringExtension.class)`注解来启动测试运行器。...

    junit单元测试junit单元测试junit单元测试

    JUnit也支持参数化测试,通过`@ParameterizedTest`注解可以运行同一测试逻辑但使用不同参数的测试用例。 此外,JUnit还支持注解驱动的测试套件(Test Suites),可以将多个测试类组合在一起,通过`@Suite`注解一次...

    Junit单元测试(很经典)

    1. **注解驱动的测试**:利用`@RunWith`注解,可以指定不同的测试运行器,如`Parameterized`运行器支持参数化测试,`SpringRunner`则适用于Spring框架的测试。 2. **测试监听器**:`TestWatcher`是Junit提供的一个...

    软件测试 Junit教程

    - **参数化测试:** `@RunWith(Parameterized.class)`可以使用不同参数运行同一测试方法多次。 - **假设(Assumptions):** `Assume`类的静态方法可以设置先决条件,如果假设不成立,测试会被跳过而非失败。 ### ...

    JUnit大合集

    5. **参数化测试**:`@Parameterized`测试允许使用不同的参数多次运行同一个测试方法,这对于测试多种输入情况非常有用。 6. **超时测试**:`@Test(timeout =毫秒数)`可以设置测试方法的最大执行时间,超过这个时间...

    Junit4学习笔记—入门篇.pdf

    从配置环境、创建测试用例、使用注解到参数化测试和测试套件的使用,每一环节都是构建高质量软件的重要组成部分。希望这篇入门指南能够帮助初次接触JUnit的同学快速上手,为进一步深入学习打下坚实的基础。 ### 五...

    Junit的使用

    在实际开发中,为了实现更灵活的测试,我们还可以使用参数化测试(`@Parameters`和`Parameterized`类)、假设测试(`Assume`类)以及使用`@Rule`定义自定义的测试规则。例如,`ExpectedException`规则可以方便地捕获...

    junit5-samples:示例项目,显示如何在Java和Spring-boot应用程序中使用JUnit 5

    6. **参数化测试**:使用 `@ParameterizedTest` 注解,可以针对不同参数集运行同一测试。 7. **注解增强**:注解现在支持元注解,可以组合多个注解,比如 `@BeforeEach` 和 `@Test`。 **Spring Boot与JUnit 5的结合...

    SpringBootJunit5Sample:Spring Boot 1.5.10 JUNIT5

    2. 参数化测试:使用`@ParameterizedTest`和`@MethodSource`注解,可以从不同的数据源执行测试。 3. 断言增强:JUnit5提供了丰富的断言API,如`Assertions.assertAll()`可以同时验证多个条件。 4. Lambda表达式...

    Junit 4.0 学习笔记

    5. 运行器(Runner):JUnit 4.0支持自定义运行器,如`BlockJUnit4ClassRunner`是默认的运行器,还有`Parameterized`用于参数化测试,`Suite`用于测试套件。 三、实战应用 1. 创建测试类:创建一个名为`MyTest`的...

    JUnit学习资料大全第二部分(共2部分)

    3. **测试数据的参数化**:JUnit4中的@RunWith(Parameterized.class)可以实现参数化测试,同一个测试方法可以针对不同的输入数据执行多次,这对于验证函数的多输入情况非常有用。 4. **测试套件(Test Suites)**:...

    sample-junit-test:JUnit测试样本

    6. 参数化测试(Parameterized Tests):JUnit支持参数化测试,允许以不同的输入数据运行同一个测试方法,这样可以覆盖更多的测试场景。 7. 模拟对象(Mocks and Stubs):在单元测试中,有时需要模拟(mock)或桩...

    jTester使用指南(带书签).pdf

    **2.2 TestNG 参数化测试** - **原理**:使用 `@DataProvider` 和 `@Test(dataProvider = "name")` 来提供不同的数据集给同一个测试方法。 - **示例代码**: ```java import org.testng.annotations.DataProvider;...

    java基础笔记

    - **Parameterized Tests**:允许使用不同参数运行同一测试方法。 - **Mock Objects**:通过模拟对象来隔离测试,避免外部依赖影响测试结果。 以上内容仅是Java基础、Struts、Spring和JUnit的冰山一角,深入学习...

Global site tag (gtag.js) - Google Analytics