首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在junit中的params中传递类?

在JUnit中,可以使用@RunWith(Parameterized.class)注解和@Parameters注解来传递类。

首先,创建一个测试类,并在类上添加@RunWith(Parameterized.class)注解。然后,创建一个公共的静态方法,使用@Parameters注解来标记该方法。该方法应该返回一个Collection对象,其中包含了要传递的测试数据。

接下来,在测试类中创建一个构造函数,用于接收传递的测试数据。同时,为每个测试数据创建相应的实例变量。

最后,在测试方法中使用实例变量进行测试。

下面是一个示例代码:

代码语言:txt
复制
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;
import java.util.Collection;

@RunWith(Parameterized.class)
public class MyClassTest {
    private int input;
    private int expected;

    public MyClassTest(int input, int expected) {
        this.input = input;
        this.expected = expected;
    }

    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {1, 2},
                {2, 4},
                {3, 6}
        });
    }

    @Test
    public void testMultiply() {
        MyClass myClass = new MyClass();
        int result = myClass.multiply(input);
        assertEquals(expected, result);
    }
}

在上面的示例中,MyClassTest是要测试的类。data()方法返回一个包含测试数据的Collection对象。在MyClassTest的构造函数中,接收传递的测试数据,并为每个测试数据创建相应的实例变量。在testMultiply()方法中,使用实例变量进行测试。

这样,当运行JUnit测试时,会自动使用@Parameters注解标记的方法来传递测试数据,并执行相应的测试方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Junit5系列-Junit5Assertions断言

目录 简介 案例解析 源码解析 Assertions与AssertNull 简介 junit5JUnit Jupiter提供了Assertions来替代了junit4Assert并且添加了一些新方法...,所以工作过程完全可以使用Assertions代替Assert。...(actual, message); } 调用了AssertNullassertNull方法 AssertNullassertNull方法源码 static void assertNull(...,继承JDK自带java.long.error,实现自己Error,这里AssertionError是所有Assertions中方法报错,其他特定错误就是继承此类。...,但有时候还是不够,当Junit5不支持你单元测试需求时,Junit5官方还是鼓励程序员去使用第三方支持库,比如:AssertJ、Hamcrest,Truth等。。。。

3.6K21
  • Selenium JUnit 注解

    JUnit 是一个基于 Java 开源框架,可帮助测试人员执行单元测试。JUnit 主要用于测试应用程序每个单元或组件,例如和方法。...参数数据类型可以是任何类型,例如字符串或整数。在下面的示例代码,作为参数传递 String 类型变量data从源注解获取一个参数。 此注解主要目的是使用不同参数多次运行测试。...注意:在使用这些注解之前添加以下库 org.junit.jupiter.params.ParameterizedTest org.junit.jupiter.params.provider.ValueSource...这个注解基本上与 @SuiteClasses 注解一起运行,它指定了一组要执行许多。套件每个在执行之前运行之后执行。...而在 @ParameterizedTest 注解,@ValueSource 将用作传递参数源注解。

    84610

    java参数传递-值传递、引用传递

    在 Java 应用程序永远不会传递对象,而只传递对象引用。因此是按引用传递对象。Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。...参数可以是对象引用,而 Java 应用程序是按值传递对象引用。 Java 应用程序变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型方式是相同。...按引用传递意味着当将一个参数传递给一个函数时,函数接收是原始值内存地址,而不是值副本。因此,如果函数修改了该参数,调用代码原始值也随之改变。...1、对象是按引用传递 2、Java 应用程序有且仅有的一种参数传递机制,即按值传递 3、按值传递意味着当将一个参数传递给一个函数时,函数接收是原始值一个副本 4、按引用传递意味着当将一个参数传递给一个函数时...good");   StringBuffer s2=s;   s2.append(" afternoon.");   System.out.println(s);   }   }   对象s和s2指向是内存同一个地址因此指向也是同一个对象

    4.7K20

    Java传递与引用传递

    引言 在Java编程,我们常常听到关于值传递和引用传递讨论。这两个概念涉及到数据在方法之间如何传递问题。理解这些概念对于正确编写Java程序至关重要。...在一些编程语言中,C++,可以实现引用传递,但在Java,不存在真正引用传递。 为什么Java只有值传递? 在Java,虽然我们常常听到关于引用传递说法,但实际上,Java只支持值传递。...这是因为Java所有数据类型都是对象,包括基本数据类型(int、double等)。在Java,对象引用被传递给方法,而不是对象本身。...这是因为在Java,数组是对象,而modifyArray方法接收到是数组引用,所以对数组修改会影响到原始数组。 尽管Java存在这种看似引用传递行为,但实际上,Java仍然是值传递。...这是因为modifyString方法接收到是str副本,而不是原始引用。 Java参数传递 在Java,无论是基本数据类型还是对象,参数传递方式都是值传递

    32450

    JAVA传递和引用传递

    num作为参数传递给changeValue()方法时,是将内存空间中num所指向那个存储单元存放值,即"5",传送给了changeValue()方法x变量,而这个x变量也在内存空间中分配了一个存储单元...自然,在函数调用之后,num所指向存储单元值还是没有发生变化,这就是所谓“值传递”!值传递精髓是:传递是存储单元内容,而非地址或者引用!...主函数new 了一个对象Person,实际分配了两个对象:新创建Person实体对象,和指向该对象引用变量person。...【注意:在java,新创建实体对象在堆内存开辟空间,而引用变量在栈内存开辟空间】 正如如上图所示,左侧是堆空间,用来分配内存给新创建实体对象,红色框是新建Person实体对象,000012...回顾一下上面的一个值传递例子,值传递,就是将存储单元内容传给调用函数那个参数,这里是不是异曲同工,是所谓“值传递”,而非“引用传递”!!! 那为什么对象内部能够发生变化呢?

    1.7K90

    Java引用传递

    我觉得引用传递  真的很好理解,不知道为什么大家觉得这么难,你只要掌握这几点就可以了 在Java机制他自己提供那些数据类型(String ,Object等)要这样理解: 1)在Java  引用  ...说就是  地址指针,或者叫地址变量, 2)引用传递  一般发生在函数调用时候,最明显特征就是  函数参数 3)如果引用传递  实用过程  ,函数没有返回值,这个叫真正引用传递,没有改变对象真实值...4)如果引用传递 实用过程,函数有返回值,且返回值类型和参数是一致,那么在外部 通过调用函数进行重新赋值,就会改变 对象真实值,我一般把它叫做假引用传递, 看懂了上面的4点,关于引用传递就没有问题了...java.lang.Object@2a139a55 null java.lang.Object@2a139a55 在Java机制自己定义数据类型,也就是通常意义上      要这样理解... 自己定义时候,是可以改变值,而传递是String对象或者Object 对象,就不能了, 把上面的代码改成这样,你就明白了: String a = "123";

    2.7K30

    C# Out 和 Ref 及Params 参数

    out 和ref 参数 经常用来通过方法传递参数来获取值,当您方法不只有一个返回值时候,这两个参数就发挥作用了。ref是传递参数地址,out是返回值,两者有一定相同之处,不过也有不同点。 ...在这篇文章里,我将解释如何在c#应用中使用这两个参数。   1、out 参数   out 方法参数关键字使方法引用传递到方法同一个变量。...当控制传递回调用方法时,在方法对参数所做任何更改都将反映在该变量。  ...当控制传递回调用方法时,在方法对参数所做任何更改都将反映在该变量。 ...在方法声明 params 关键字之后不允许任何其他参数,并且在方法声明只允许一个 params 关键字。

    1.2K10

    何在java创建不可变

    原文【如何在java创建不可变?】地址 今天我们将学习如何在java创建不变。不可变对象是在初始化之后状态不变实例。例如,String是一个不可变,一旦实例化,它值不会改变。...不可改变对于缓存目的是有益,因为你不需要担心价值变化。不可变其他好处是它本质上是线程安全,所以在多线程环境情况下,您不需要担心线程安全。...在这里,我提供了一种通过一个例子来创建Java不可变方法,以便更好地理解。 要在java创建不可变,您必须执行以下步骤。 将声明为final,因此无法扩展。...在getter方法执行对象克隆以返回一个副本而不是返回实际对象引用。 要了解第4点和第5点,我们来运行Final,其效果很好,实例化后值不会被更改。...进一步阅读:如果不可变有很多属性,其中一些属性是可选,我们可以使用构建器模式来创建不可变

    1.9K50

    何在 Django 创建抽象模型

    我们将学习如何在 Django 创建抽象模型。 Django 抽象模型是一个模型,它用作其他模型继承模板,而不是一个旨在创建或保存到数据库模型。...在应用程序,可以使用抽象模型定义多个模型共享相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 模型,以建立一个抽象模型。...在 Django ,从抽象模型继承遵循与传统模型相同准则。超声明所有字段和方法都由子类继承,子类可以根据需要替换或添加它们。开发从抽象模型派生新模型时,不应将抽象属性设置为 True。...创建抽象模型步骤 步骤 1 - 设置一个继承自 django.db.models 。抽象模型使用模型。此类可以具有您喜欢任何名称,但最好使用准确描述它在应用程序功能名称。...步骤 4 − 提供抽象模型具体模型。可以根据需要定义每个具体模型附加变量和操作。 步骤 5 - 执行迁移以构建具体模型所需数据库表。

    21430

    何在Vue动态添加

    无论classname计算结果是什么,都将是添加到组件名。 当然,对于Vue动态,我们可以做还有很多。...在本文中,我们将讨论很多内容: 在 Vue 中使用静态和动态 如何使用常规 JS 表达式来计算我们 动态数组语法 对象语法 快速生成名 如何在自定义组件上使用动态名 静态和动态 在Vue...静态是那些永远不会改变乏味,它们将始终出现在组件。另一方面,我们可以在应用程序添加和删除动态。... 这里你会注意到,我们必须在动态名周围添加额外引号。 这是因为v-bind语法接受我们作为 JS 值传递任何内容。添加引号可以确保Vue将其视为字符串。...在组件上设置props时,Vue会将这些props与组件在其props部分中指定props进行比较。 如果有匹配项,它将作为常规props传递。 否则,Vue会将其添加到根DOM元素

    6.2K10

    Java传递与引用传递详解

    (1)值传递 在方法调用,实参会把它传递给形参,形参只是实参值初始化一个临时存储单元,因此形参与实参虽然有着相同值,但是却有着不同存储单元,因此对形参改变不会影响实参值。...(2)引用传递 在方法调用传递是对象(也可以看作是对象地址),这时形参与实参对象指向同一块存储单元,因此对形参改变就会影响实参值。...而StringBuffer由于是一个,因此按引用传递传递是它引用(传递是存储“Hello”地址),如上图所示,在testPassParameter内部修改是n值,这个值与i是没有关系。...Java处理8种基本数据类型用是值传递,其他所有类型都是引用传递,由于这8种数据类型包装类型都是不可变量,因此增加了对“按引用传递理解难度。...其实这是一个理解上误区,上述代码还是按引用传递,只是由于Integer是不可变,因此没有提供改变它值方法,在上例,执行完语句b++后,由于Integer是不可变,因此此时会创建一个新值为2

    2K30
    领券