我的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
答案 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中运行,那么该测试会影响其后运行的所有其他测试所看到的状态。测试应该是自包含的。