方法不返回所需的结果

时间:2013-08-07 06:15:59

标签: java methods junit arraylist

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

好吧,我觉得我已经正确编写了代码,但当我尝试对其进行Junit测试时,我收到错误“Expected< 6>,但返回< -1>”。有没有人看到我的方法语法或我测试方法的方式有任何问题?提前感谢您精彩的人们提供的所有帮助!

顺便说一句,我试图将所有相关内容都包括在内,以找出有问题的具体方法。如果需要其他东西,请告诉我!

有问题的方法:我创建一个临时的Station对象来保存在列表中“i”位置找到的信息。然后,我创建一个临时String来保存我刚刚检索到的对象的描述。如果描述与输入的显式参数匹配,那么我希望它返回找到它的索引号。我的常数变量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"));  
}

0 个答案:

没有答案