Java 如何在JUnit中测试这样复杂的方法?

Java 如何在JUnit中测试这样复杂的方法?,java,testing,junit,Java,Testing,Junit,我被指派去测试这个Java方法,但我似乎不知道该怎么做。有人能帮忙吗?这是游戏实现的start()方法: public void start() { Scanner sc = new Scanner(System.in); boolean continueGame = true; while (continueGame) { reset(); play(); System.out.println("Do you want a

我被指派去测试这个Java方法,但我似乎不知道该怎么做。有人能帮忙吗?这是游戏实现的
start()
方法:

public void start() {
    Scanner sc = new Scanner(System.in);
    boolean continueGame = true;
    while (continueGame) {
        reset();
        play();
        System.out.println("Do you want a rematch?(y/n)");
        continueGame = sc.hasNextBoolean() ;
    }
请注意使用assertTrue(res)。使用函数将布尔值指定给while循环,并使结果在循环内部为true。这样您就可以使用assertTrue(res)

assertTrue位于JUnit集合中

公共布尔等等式(continueGame){ 逻辑 而() 返回true;
}

您确定必须使用JUnit进行测试吗?这是可能的,但不是一个真正合适的作业,除非你应该学习重定向标准输入。嘿!我也可以做系统测试,不特别是JUnit。我不想澄清这一点,这会更有意义。你所测试的基本上是整个游戏,而不是一个“单元”。事实上。更复杂的是,这实际上是一个学校项目,包括实现一个棋盘游戏,由于我是Java新手,所以我有点挣扎。你能帮我做一下系统测试,让我对它有一点了解吗?顺便说一句,感谢您的快速回答。您的类最好依赖于
InputStream
,通常通过构造函数参数,您可以在单元测试中模拟该参数。然后在生产代码中,您将通过
系统。在
中作为
InputStream
实现。您好,谢谢您的建议。我是在一个单独的文件中创建此函数,还是可以在与实际函数相同的文件中创建此函数?它将在同一个文件中。如果你在一个单独的文件中这样做,你将不得不使用变异器和访问器(getter和setter),这对你来说可能是非常好的实践