案例三nextday

案例三nextday程序

项目结构:

测试代码TestMD

import junit.framework.TestCase;
import org.junit.Test;
import test.MyDateNew;
 
import static org.junit.Assert.*;
 
public class TestMD extends TestCase {
 
 
public void testIsLeap() {//判断是否为闰年
assertTrue(MyDateNew.isLeap(2000));
assertTrue(MyDateNew.isLeap(2004));
assertFalse(MyDateNew.isLeap(1900));
assertFalse(MyDateNew.isLeap(1997));
}
 
 
public void testMaxDay() {//计算指定年的指定月的最大天数
assertEquals(MyDateNew.maxDay(2000, 2), 29);
assertEquals(MyDateNew.maxDay(2004, 2), 29);
assertEquals(MyDateNew.maxDay(1900, 2), 28);
assertEquals(MyDateNew.maxDay(1998, 2), 28);
assertEquals(MyDateNew.maxDay(2002, 3), 31);
assertEquals(MyDateNew.maxDay(2000, 4), 30);
assertTrue("月份有问题",MyDateNew.maxDay(2000, 13)<1);//因为在最大天数代码里如果是13月应该返回31天,所以这里是false
 
}
//注意:
/*
*/
 
public void testNextDate() {//测试下一天
MyDateNew nd;
nd = new MyDateNew(2012, 12, 31).nextDate();
assertEquals(nd.getYear(), 2013);
assertEquals(nd.getMonth(), 1);
assertEquals(nd.getDay(), 1);
nd = new MyDateNew(2012, 13, 31).nextDate();
assertNull(nd);
nd = new MyDateNew(2012, 1, 32).nextDate();
assertNull(nd);
}
 
}
可复制的测试代码TestMD
 import junit.framework.TestCase;
import org.junit.Test;
import test.MyDateNew;

import static org.junit.Assert.*;

public class TestMD extends TestCase {


    public void testIsLeap() {
       assertTrue(MyDateNew.isLeap(2000));
       assertTrue(MyDateNew.isLeap(2004));
       assertFalse(MyDateNew.isLeap(1900));
       assertFalse(MyDateNew.isLeap(1997));
    }


    public void testMaxDay() {
       assertEquals(MyDateNew.maxDay(2000, 2), 29);
       assertEquals(MyDateNew.maxDay(2004, 2), 29);
       assertEquals(MyDateNew.maxDay(1900, 2), 28);
       assertEquals(MyDateNew.maxDay(1998, 2), 28);
       assertEquals(MyDateNew.maxDay(2002, 3), 31);
       assertEquals(MyDateNew.maxDay(2000, 4), 30);
       assertTrue("月份有问题",MyDateNew.maxDay(2000, 13)<1);
    }


    public void testNextDate() {
       MyDateNew nd;
       nd = new MyDateNew(2012, 12, 31).nextDate();
       assertEquals(nd.getYear(), 2013);
       assertEquals(nd.getMonth(), 1);
       assertEquals(nd.getDay(), 1);
       nd = new MyDateNew(2012, 13, 31).nextDate();
       assertNull(nd);
       nd = new MyDateNew(2012, 1, 32).nextDate();
       assertNull(nd);
    }

}

1. assertNull 方法的功能

assertNull 是 JUnit 框架中的一个静态方法,定义在 org.junit.Assert 类中。它接收一个对象作为参数,当传入的对象为 null 时,测试通过;若传入的对象不为 null,则测试失败并抛出 AssertionError 异常。

2. 代码中的使用情况

  • nd = new MyDateNew(2012, 13, 31).nextDate(); assertNull(nd);
    • 这里创建了一个 MyDateNew 对象,其日期为 2012 年 13 月 31 日,然后调用 nextDate 方法尝试获取下一天的日期。由于 13 月属于无效月份,依据 MyDateNew 类里 nextDate 方法的逻辑,当月份超出 1 到 12 的范围时,会返回 null
    • assertNull(nd) 这行代码对 nextDate 方法的返回值是否为 null 进行验证,以此确保 nextDate 方法能正确处理无效月份的情况。
posted @ 2025-04-06 10:24  Annaprincess  阅读(25)  评论(0)    收藏  举报