2

我开始使用 Junit,我有一个非常基本的问题。

我想检查方法rateTrans。我还没有实现这个,但我想在实现之前编写测试。我知道这个方法会得到哪些参数。

于是我写了下一节课:

import org.junit.Assert.*;
import junit.framework.*;

public class testing extends TestCase {

    public void testAdd(){
    assertTrue(rateTrans("1223",1,2,3,4,"blabla"));
    assertTrue(rateTrans("1223",1,2,3,4,"")) ;
    assertFalse(rateTrans("1223",7,2,3,4,"blabla"));
    }
}

它给了我下一个问题:The method rateTrans(String, int, int, int, int, String) is undefined for the type testing.

我做错了什么?

4

3 回答 3

6

无论是在 TDD 环境中还是在 IDE 从接口生成类时,我首选的临时实现方式是抛出异常,例如UnsupportedOperationException

boolean rateTrans(String firstStr, int firstInt, int secondInt, int thirdInt, int fourthInt, String secondStr) {
    // TODO: implement me!
    throw new UnsupportedOperationException("Not yet implemented");
}

抛出异常而不是返回潜在的有效值(例如null, false, 0,或类似值)的原因是""Collections.empyList()很明显实际上没有有效的实现。否则,临时解决方案很可能被遗忘,人们开始使用它,假设它已正确实施。

编辑:添加参数列表。

于 2012-04-22T11:21:22.303 回答
2

只需用一个空的主体和/或null作为返回值来实现它(好吧,在这种情况下false可能是一个不错的选择):

protected boolean rateTrans(String, int, int, int, int, String) {
    // TODO: implement me!
    return false;
}

恭喜,你正在做 TDD!一旦你实现了所有的测试,你就可以实现方法本身。在此之前,由于布尔返回值,一些测试可能是绿色的,而其他测试可能是红色的。

于 2012-04-22T10:33:22.050 回答
1

UnsupportedOperationException从您尚未提供实现的方法中抛出一个。这比返回任意值要好得多。即假或真

于 2012-04-22T11:23:08.637 回答