1

我在下面包含了一段代码,我似乎无法弄清楚我做错了什么。该代码是我正在编写的程序的一部分,该程序使用包含几个显式参数的虚拟加油站对象填充数组列表;其中之一是“描述”,它是一个字符串参数,是加油站的名称。有问题的方法 findStation() 采用一个显式参数,该参数设置为加油站的名称。然后,使用它,我在我的数组列表中搜索寻找与我的 toMatch 显式参数匹配的加油站描述(使用先前声明的 getDescription() 方法,我知道函数正确)。如果找到匹配项,则返回找到匹配项的整数位置。

好吧,我觉得好像我已经正确编写了代码,但是当我尝试对其进行 Junit 测试时,我收到错误“预期 <6>,但返回 <-1>”。有没有人看到我的方法语法或测试方法的方式有什么问题?提前感谢你们这些好人的所有帮助!

顺便说一句,我试图包括与找出所讨论的具体方法有关的所有内容。让我知道是否需要其他东西!

有问题的方法:我创建了一个临时 Station 对象来保存在列表中“i”位置找到的信息。然后,我创建一个临时字符串来保存我刚刚检索到的对象的描述。如果描述与输入的显式参数匹配,那么我希望它返回找到它的索引号。我的常量变量 NO_MATCH 设置为等于“-1”,所以我的测试告诉我加油站描述不存在,而它显然存在。

public int findStation(String toMatch)
{ 
    //returns the index where a match is found
    for (int i = 0; i < stations.size(); i++)
    {
        Station tmpStation = stations.get(i);
        String tmpDescription = tmpStation.getDescription();
        if (tmpDescription.equals(toMatch))
        {
            return i;
        }
    }
    return NO_MATCH;
}

此外,用于添加电台的 addStation() 方法。

public boolean addStation(double inLatitude, double inLongitude, 
    String inDescription, double inPrice, String inFuelType)
{
    // Be sure inDescription is not a description in the collection
    if (this.findStation(inDescription) == NO_MATCH)
    {
        Station tmpStation = new Station();
        stations.add(tmpStation);
        return true;
    }
    else return false;
} 

Junit 测试包括 setup() 让您了解我正在使用的内容。

protected void setUp()
{
    // collection for testing
    collection2 = new StationCollection();

    // add stations to the collection
    this.collection2.addStation(39.933611, -82.4725, 
        "Snake on the Lake", 2.99, "B80");
    this.collection2.addStation(39.9621, -83.0005, 
        "Snake Central", 2.25, "E45");
    this.collection2.addStation(39.94, -82.48, 
        "Snake Brothers", 2.27, "E45");
    this.collection2.addStation(39.8614, -82.8916, 
        "Anna Conda Oil", 2.71, "PROPANE");        
    this.collection2.addStation(39.8614, -82.8916, 
        "Anna Conda Oil - II", 2.27, "E45");
    this.collection2.addStation(39.9060, -82.7562, 
        "Tiger Snake", 2.31, "E40");
    this.collection2.addStation(39.9611, -82.9988, 
        "Rattler Ray's", 2.15, "E84");
    this.collection2.addStation(40.011792, -82.973196, 
        "Water Adder Oil", 3.20, "B80");
    this.collection2.addStation(40.011792, -82.974, 
        "Water Adder Oil - II", 2.31, "E40");
}

public void testFindStation()
{
    // Create an empty collection
    StationCollection collection1 = new StationCollection();

    // Attempt to find a station in the empty collection        
    assertEquals(StationCollection.NO_MATCH, collection1.findStation("Rattler Ray's"));

    // Use non-empty collection2

    // Look for position of matching station
    assertEquals(6, collection2.findStation("Rattler Ray's"));

    // Check that it detects a non-matching station
    assertEquals(StationCollection.NO_MATCH, collection2.findStation("Sam Snake's"));  
}
4

0 回答 0