Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Junit测试中打印出方法的输出_Java_Junit - Fatal编程技术网

Java 在Junit测试中打印出方法的输出

Java 在Junit测试中打印出方法的输出,java,junit,Java,Junit,所以对于赋值,我们的任务是构建通用函数来处理对象。在这种情况下是两个不同的卡片组。一个是你的标准52扑克牌组,另一个是我们精选的扑克牌组。我选择了《星际迷航》的下一代卡片。(免责声明,我对junit测试知之甚少。我的课程中从未涉及过它,而我所知的一点来自实验)无论如何,我有一个方法可以处理X张卡。我需要帮助,弄清楚如何在junit测试中打印出方法的输出。下面是我的junit测试代码和方法 '''public void test_cardPile_dealNum() { aceOf

所以对于赋值,我们的任务是构建通用函数来处理对象。在这种情况下是两个不同的卡片组。一个是你的标准52扑克牌组,另一个是我们精选的扑克牌组。我选择了《星际迷航》的下一代卡片。(免责声明,我对junit测试知之甚少。我的课程中从未涉及过它,而我所知的一点来自实验)无论如何,我有一个方法可以处理X张卡。我需要帮助,弄清楚如何在junit测试中打印出方法的输出。下面是我的junit测试代码和方法

'''public void test_cardPile_dealNum() {
        aceOfHearts = new StandardCard ("Hearts", "Ace");
        aceOfDiamonds = new StandardCard ("Montrial", "Ace");
        aceOfClubs = new StandardCard("Clubs", "Ace");
        fedCaptain = new starTrekCards("Federation", "Jean Luc Picard");
        fedFirstOff = new starTrekCards("Federation","Willian Riker");
        fedDoctor = new starTrekCards("Federation", "Beverly Crusher");
        fedCounciler = new starTrekCards("Federation","Diana Troy");
        contArse = new starTrekCards ("Continuum", "Q");
        romCommander = new starTrekCards("Romulan Star Empire", "Commander Sela");
        romSupport = new starTrekCards ("Romulan Star Empire", "Kimara Cretak");
        klingLeader = new starTrekCards ("Klingon Empire", "Chancelor Garon");

        int number = 3;


    CardPile test3 =new CardPile ();
    LinkedStack Holder;

    test3.add(aceOfHearts);
    test3.add(aceOfDiamonds);
    test3.add(aceOfClubs);
    test3.add(fedCaptain);
    test3.add(fedFirstOff);
    test3.add(fedDoctor);
    test3.add(fedCounciler);
    test3.add(contArse);
    test3.add(romCommander);
    test3.add(romSupport);
    test3.add(klingLeader);

    Holder = test3.dealNumb(3);

    System.out.println(Holder.toString());
    }''''
还有我的方法

'''

public LinkedStack dealNumb(整数)
{
如果(!card.isEmpty()){
LinkedStack cardTwo=新LinkedStack();
for(int i=0;i

提前感谢

有句老话值得重复:

任何依赖人的可靠性的东西都是天生不可靠的

每个人都会犯错——你,我,每个人。当您运行上面的测试时,您依赖于您的人的可靠性来发现任何与预期不同的输出。这是不可靠的,bug会通过的(更不用说对你来说痛苦的无聊!)

单元测试(比如JUnit)的强大之处在于它们是自动化的。在业务中,它们通常在无人参与的情况下运行,内置于构建过程中,每当有人提交某段代码时,构建过程会在后台自动运行

因此,测试不是为了显示结果供人检查,而是测试本身检查结果,通常通过“Assert”语句。您会发现Junit中有一些(“AssertThat”、“AssertEquals”等),Hamcrest也很有用(请参阅)

因此,你要做的不是你的
println
,而是断言你已经得到了你想要的三张卡片,并且这些卡片不再在你的卡片堆中-例如:

// nb variable names like "holder" should start with lower-case
AssertThat(holder, is(equalTo(List.of(romCommander, romSupport, klingLeader))));
AssertThat(test3.size(), is(equalTo(8))));
AssertThat(test3.pop(), is(equalTo(contArse))));
(顺便说一句,
是(equalTo(List.of
可能不适用于LinkedStack的任何实现,但希望您能理解:))

此外,就个人而言,我总是更喜欢
AssertThat
而不是
AssertEquals
,因为它更具可读性,并且避免了人们编写类似以下内容的常见错误:

AssertEquals(test3.size(), 3);
这是错误的方法!预期结果应该排在第一位,因此应该是:

AssertEquals(3, test3.size());

…但最好还是坚持使用
断言,即

打印结果的目的是什么?这是为了显示方法的有效性,
AssertEquals(3, test3.size());