所以我有一个示例方法,我给他一天时间,它会返回一周的第一天和最后一天,其中这一天:
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/