Java JUnit测试失败-必须是已知的项目编号

Java JUnit测试失败-必须是已知的项目编号,java,arrays,list,methods,junit,Java,Arrays,List,Methods,Junit,我的Junit测试一直失败,并说Junit.framework.AssertionFailedError:必须是已知的项目编号我尝试了多种不同的测试方法,但找不到解决方案。似乎找不到我输入的项目编号,但正如您在主类中看到的,项目编号“1”和所有其他详细信息都在那里,并且匹配 我正在测试的课程: package Purchase; import java.util.*; public class ItemStore implements saveItem { privat

我的Junit测试一直失败,并说
Junit.framework.AssertionFailedError:必须是已知的项目编号
我尝试了多种不同的测试方法,但找不到解决方案。似乎找不到我输入的项目编号,但正如您在主类中看到的,项目编号“1”和所有其他详细信息都在那里,并且匹配

我正在测试的课程:

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 

主方法和测试类之间没有任何关系。您必须为每个测试创建并填充一个
ItemStore
(如果您希望为每个测试使用相同的夹具,可能在
设置中)

编辑:

测试类和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中运行,那么该测试将影响在它之后运行的所有其他测试所看到的状态。测试应该是独立的。

@chieftwo铅笔其他一切都运行得很好,只是我的测试由于某种原因无法通过。我是Junit新手,所以我不确定我是否做了错误的测试。输入一些调试打印语句或使用调试器运行代码,然后找出错误的地方。在设置方法中,我需要创建数组列表??您需要将三个记录项添加到
ItemStore
,否则您的测试将试图在空
ItemStore
中查找项。如何将它们添加到ItemStore,我以为它们已经存储在那里了?