JUnit测试失败 - 必须知道项目编号

时间:2016-02-19 02:42:57

标签: java arrays list methods junit

我的Junit测试一直失败并且说junit.framework.AssertionFailedError: must be known item number我尝试了多种不同的测试方式但无法找到解决方案。它似乎无法找到我输入的项目编号,但正如您可以从主要课程中看到的,项目编号' 1'所有其他细节都在那里匹配!

I级测试:

package Purchase; 


import java.util.*;
public class ItemStore implements saveItem {     

    private class saveDescriptor {
        int itemNumber;


        assert !isKnownItemNumber(itemNumber) : "must not be used item number";
        assert unitPrice > 0 : "price must be positive";
        assert sort == 0 || sort == 1 : "sort must be 0 or 1";
        assert !description.trim().equals("") : "description must not be 

1 个答案:

答案 0 :(得分:0)

您的主要方法和测试类彼此无关。您必须为每个测试创建并填充ItemStore(如果您想为每个测试使用相同的灯具,可能在setUp方法中)。

编辑:

测试类和GUI应用程序是两个完全不同的程序。在GUI程序中,您向ItemStore添加了一些记录:

ItemStore.newItems.recordItem(1,"Banana", 1.00, 1);
ItemStore.newItems.recordItem(2, "Tv", 250.00, 0);
ItemStore.newItems.recordItem(3, "Carrots", 0.75, 1);

此程序中存在这些项目。在您的测试类中,您没有任何看起来像这样的行。试试这个进行第一次测试:

@Test
public void testIsKnownItemNumber() {
    System.out.println("isKnownItemNumber");
    int itemNumber = 1;
    ItemStore.newItems.recordItem(1, "Banana", 1.00, 1);
    ItemStore instance = new ItemStore();
    boolean expResult = true;
    boolean result = instance.isKnownItemNumber(itemNumber);
    assertEquals(expResult, result);
}

我也会摆脱testRecordItem,因为它实际上并没有测试任何东西。摆脱静态newItem列表,并使其成为ItemStore的实例字段。这可能是您的某些测试可能已经通过的原因:如果所有测试都在同一个JVM中运行,那么该测试会影响其后运行的所有其他测试所看到的状态。测试应该是自包含的。