vivia0717 2023-05-23 20:02 采纳率: 50%
浏览 24
已结题

junit单元测试代码

java怎么针对main函数进行单元测试:需要测试的代码如下
package Part1;

import java.util.Scanner;

public class LeapYear1 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String yearStr;
    int year;
    while (true) {
        System.out.print("请输入4位年份(输入q退出程序):");
        yearStr = input.nextLine();
        if (yearStr.equals("q")) {
            break;
        } else if (!yearStr.matches("\\d{4}")) {
           System.out.println("输入有误,请重新输入4位数字年份");
           continue;
        }
     year = Integer.parseInt(yearStr);
     if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
         System.out.println(year+"是闰年");
     } else {
         System.out.println(year+"不是闰年");
     }
   }
}    

}

  • 写回答

3条回答 默认 最新

  • 码上团建 2023-05-23 20:09
    关注

    main方法可以直接执行测试的,如果你非要调用 LeapYear1.main()方法测试,可以通过下面代码测试:
    1 创建一个测试类,使用JUnit的@Test注解标记测试方法。

    import org.junit.Test;
    import java.io.ByteArrayInputStream;
    import java.util.Scanner;
    
    public class LeapYear1Test {
    
        @Test
        public void testLeapYear() {
            String input = "2020\nq\n"; // 模拟用户输入
            System.setIn(new ByteArrayInputStream(input.getBytes())); // 重定向标准输入流
            LeapYear1.main(new String[]{}); // 调用待测试的main函数
        }
    }
    
    
    

    2 在测试方法中,使用ByteArrayInputStream模拟用户输入,重定向标准输入流,然后调用待测试的main函数。

    3 运行测试类,观察测试结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 5月23日

悬赏问题

  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout