java - 我需要测试类中的测试方法吗

标签 java testing methods junit

所以我有一个示例方法,我给他一天时间,它会返回一周的第一天和最后一天,其中这一天:

public static final DatePeriod thisWeek(LocalDate date) {

    TemporalField dayOfWeek = WeekFields.of(Locale.FRANCE).dayOfWeek();
    LocalDate mon = date.with(dayOfWeek, 1);
    LocalDate sun = date.with(dayOfWeek, 7);

    return new DatePeriod(mon, sun);
}

我必须编写一个 JUnit 测试(我做到了):

@Test
public void testThisMonth_LocalDate() throws ParseException {
    System.out.println("thisMonth");
    for (String[] date : VALID_TEST_DATES) {
        LocalDate dateLocal = dateToLocal(date[0]);
        DatePeriod expResult = new DatePeriod(dateToLocal(date[5]), dateToLocal(date[6]));
        DatePeriod result = JavaTimeUtils.thisMonth(dateLocal);
        assertEquals(expResult.getLeft(), result.getLeft());
        assertEquals(expResult.getRight(), result.getRight());
    }
}

所以,因为我在 dateToLocal() 中多次使用了代码,所以我决定用这样的方法来实现它:

public LocalDate dateToLocal(String dateString) throws ParseException {   // Calendar to LocalDate
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    Calendar cal = Calendar.getInstance();
    Date initDate = df.parse(dateString);
    cal.setTime(initDate);
    LocalDate dateLocal = LocalDate.of(cal.get(Calendar.YEAR), Month.of(cal.get(Calendar.MONTH)+1), cal.get(Calendar.DAY_OF_MONTH));

    return dateLocal;
}

而且它有效。 但这不是我的问题。 我想知道这是正确的方法来做这样的事情吗(这个 JUnit 测试中的方法),我是否需要为这个方法做测试,我是否必须将它移动到其他类中(在这个 JUnit 测试之外)测试)?我知道这是个奇怪的问题,我已经在谷歌中搜索过,但没有成功。 (也许我不能问谷歌吧)。 谢谢:)

最佳答案

做事没有绝对的方法,一切都取决于项目。

这个话题对每个人的主观性都是开放的。

IMO,如果您在单个测试类中多次使用一个代码块,则应在本地方法中提取该 block 。

如果您在多个测试方法中使用它,您应该研究继承或在测试包下创建一个小的 util 类。

如果您的主要 java 代码中也需要该方法,那么您应该为其编写单元测试。测试的目的是验证您的运行时代码。 JUnit 代码在运行时运行。

关于java - 我需要测试类中的测试方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142888/

相关文章:

java - Java 扑克骰子程序

java - Gson - 解析具有不同字段名称和字段数量的 json

java - 迭代模拟集合时 verifyNoMoreInteractions 失败

Java HTMLUnit WebClient ScriptException 错误

java - 运行 JTestR 示例需要什么? (或根本不使用 JTestR)

R:S3 方法调度取决于参数

java - Spark - 用列除以整数?

angular - 如何测试 Angular 2 ErrorHandler 的实现?

android - 在 Android 中测试 Main/Launcher Activity

objective-c - 顺序方法执行 obj-c