使用 Junit 进行参数化测试

发布于 2024-11-03 21:21:28 字数 213 浏览 3 评论 0原文

如何在 JUnit 中使用参数化测试来测试以下方法

public class Math {
    public static int add(int a, int b) {  
        return a + b;
    }
}

当我想使用 10 个不同的参数对其进行测试时,我想知道如何使用 Junit 实现参数化测试来测试该方法。

How can I test the following method with parameterized testing in JUnit

public class Math {
    public static int add(int a, int b) {  
        return a + b;
    }
}

I wish to know how parameterized testing with Junit will be implemented to test this method, when I want to test it with 10 different args.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疑心病 2024-11-10 21:21:28

测试类必须有一个注释 @RunWith(Parameterized.class) 并且返回 Collection 的函数应该用 @Parameters 标记code> 和接受输入和预期输出

API 的构造函数: http://junit.sourceforge.net/javadoc/org/junit/runners/Parameterized.html

 @RunWith(Parameterized.class)
 public class AddTest {
        @Parameters
        public static Collection<Object[]> data() {
                return Arrays.asList(new Object[][] {
                                { { 0, 0, 0 }, { 1, 1 ,2}, 
                                  { 2, 1, 3 }, { 3, 2, 5 }, 
                                  { 4, 3, 7 }, { 5, 5, 10 },
                                  { 6, 8, 14 } } });
        }

        private int input1;
        private int input2;

        private int sum;

        public AddTest(int input1, int input2, int sum) {
                this.input1= input1;
                this.input2= input2;
                this.sum = sum;
        }

        @Test
        public void test() {

                assertEquals(sum, Math.Add(input1,input2));
        }
 }

The test class must have an annotation @RunWith(Parameterized.class) and function returning a Collection<Object[]> should be marked with @Parameters and a constructor accepting the inputs and the expected output(s)

API: http://junit.sourceforge.net/javadoc/org/junit/runners/Parameterized.html

 @RunWith(Parameterized.class)
 public class AddTest {
        @Parameters
        public static Collection<Object[]> data() {
                return Arrays.asList(new Object[][] {
                                { { 0, 0, 0 }, { 1, 1 ,2}, 
                                  { 2, 1, 3 }, { 3, 2, 5 }, 
                                  { 4, 3, 7 }, { 5, 5, 10 },
                                  { 6, 8, 14 } } });
        }

        private int input1;
        private int input2;

        private int sum;

        public AddTest(int input1, int input2, int sum) {
                this.input1= input1;
                this.input2= input2;
                this.sum = sum;
        }

        @Test
        public void test() {

                assertEquals(sum, Math.Add(input1,input2));
        }
 }
荒芜了季节 2024-11-10 21:21:28

最近我启动了 zohhak 项目。我相信它比 @Parametrized 干净得多:

@TestWith({
   "25 USD, 7",
   "38 GBP, 2",
   "null, 0"
})
public void testMethod(Money money, int anotherParameter) {
   ...
}

recently i started zohhak project. i believe it's much cleaner than @Parametrized:

@TestWith({
   "25 USD, 7",
   "38 GBP, 2",
   "null, 0"
})
public void testMethod(Money money, int anotherParameter) {
   ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文