如何在Junit 4中重写JUnit 3的数据驱动测试套件?

发布于 2024-09-01 18:08:38 字数 1963 浏览 4 评论 0 原文

我正在使用基于 Rainsberger 的 JUnit Recipes 运行 JUnit 3 的数据驱动测试套件。 这些测试的目的是检查与一组输入输出对相关的某个功能是否正确实现。

以下是测试套件的定义:

public static Test suite() throws Exception {
    TestSuite suite = new TestSuite();
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(2009, 8, 05, 13, 23); // 2009. 09. 05. 13:23
    java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.YYYY_MON_DD, "2009-SEP-05"));
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.DD_MON_YYYY, "05/SEP/2009"));
    return suite;
}   

以及测试类的定义:

public class DateFormatTestToString extends TestCase {

    private java.sql.Date date;
    private JtDateFormat.FormatType dateFormat;
    private String expectedStringFormat;

    public DateFormatTestToString(java.sql.Date date, JtDateFormat.FormatType dateFormat, String expectedStringFormat) {
        super("testGetString");
        this.date = date;
        this.dateFormat = dateFormat;
        this.expectedStringFormat = expectedStringFormat;
    }

    public void testGetString() {
        String result = JtDateFormat.getString(date, dateFormat);
        assertTrue( expectedStringFormat.equalsIgnoreCase(result));
    }
}

如何使用 JUnit 4 测试方法的多个输入输出参数?

这个问题和答案向我解释了 JUnit 3 和4 在这方面。 这个问题和答案描述了为一组类而不是为方法创建测试套件的方法具有一组不同的参数。

解决方案

根据drscroogemcduck的答案,这是具体页面有什么帮助。

I am using data-driven test suites running JUnit 3 based on Rainsberger's JUnit Recipes.
The purpose of these tests is to check whether a certain function is properly implemented related to a set of input-output pairs.

Here is the definition of the test suite:

public static Test suite() throws Exception {
    TestSuite suite = new TestSuite();
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.set(2009, 8, 05, 13, 23); // 2009. 09. 05. 13:23
    java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.YYYY_MON_DD, "2009-SEP-05"));
    suite.addTest(new DateFormatTestToString(date, JtDateFormat.FormatType.DD_MON_YYYY, "05/SEP/2009"));
    return suite;
}   

and the definition of the testing class:

public class DateFormatTestToString extends TestCase {

    private java.sql.Date date;
    private JtDateFormat.FormatType dateFormat;
    private String expectedStringFormat;

    public DateFormatTestToString(java.sql.Date date, JtDateFormat.FormatType dateFormat, String expectedStringFormat) {
        super("testGetString");
        this.date = date;
        this.dateFormat = dateFormat;
        this.expectedStringFormat = expectedStringFormat;
    }

    public void testGetString() {
        String result = JtDateFormat.getString(date, dateFormat);
        assertTrue( expectedStringFormat.equalsIgnoreCase(result));
    }
}

How is it possible to test several input-output parameters of a method using JUnit 4?

This question and the answers explained to me the distinction between JUnit 3 and 4 in this regard.
This question and the answers describe the way to create test suite for a set of class but not for a method with a set of different parameters.

Solution:

Based on drscroogemcduck's answer this is the exact page what helped.

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

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

发布评论

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

评论(1

烂柯人 2024-09-08 18:08:38

非常简单的方法:

你总是可以有一个方法:

checkGetString(date, dateFormat, expectedValue)

然后有一个

@Test
testGetString:

  checkGetString(date1, '...', '...');
  checkGetString(date2, '...', '...');

更好的方法:

http://junit.sourceforge.net/javadoc_40/org/junit/runners/Parameterized.html

或更好的 junit 理论:

http://isagoksu.com/2009/development/agile-development/test-driven -development/using-junit-datapoints-and-theories/

the really simple way:

you can always have a method:

checkGetString(date, dateFormat, expectedValue)

and then just have a method

@Test
testGetString:

  checkGetString(date1, '...', '...');
  checkGetString(date2, '...', '...');

the nicer way:

http://junit.sourceforge.net/javadoc_40/org/junit/runners/Parameterized.html

or better junit theories:

http://isagoksu.com/2009/development/agile-development/test-driven-development/using-junit-datapoints-and-theories/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文