【问题标题】:JUnit testing failure - Must be known Item NumberJUnit 测试失败 - 必须知道项目编号
【发布时间】:2016-02-19 02:42:56
【问题描述】:

我的 Junit 测试一直失败并说junit.framework.AssertionFailedError: must be known item number 我尝试了多种不同的测试方法,但找不到解决方案。似乎找不到我正在输入的项目编号,但正如您从主类中看到的那样,项目编号“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 

【问题讨论】:

  • @ChiefTwoPencils 其他一切运行完美,只是我的测试由于某种原因无法通过。我是 Junit 新手,所以我不确定我做的测试是否不正确。
  • 放入一些调试打印语句或使用调试器运行代码,并找出它在哪里下降。另见ericlippert.com/2014/03/05/how-to-debug-small-programs

标签: java arrays list methods junit


【解决方案1】:

你的 main 方法和测试类没有任何关系。您必须为每个测试创建并填充一个 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 中运行,那么该测试会影响在它之后运行的所有其他测试所看到的状态。测试应该是自包含的。

【讨论】:

  • 所以在设置方法中我需要创建数组列表??
  • 您需要将三个记录项添加到ItemStore,否则您的测试会尝试在空的ItemStore 中查找项。
  • 如何将它们添加到 ItemStore,我以为它们已经存储在那里了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 2019-05-02
  • 2015-07-04
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
相关资源
最近更新 更多