字符串输出的测试方法?

时间:2014-02-20 13:42:39

标签: java unit-testing junit

我想测试下面的类/方法,这是一个基本的方法,如果你输入例如2然后每个月都会返回“feb”等等。

package sem2pract3;

public class Ex2 {

public String month(int opt){

    String month=null;

    switch(opt){
    case 1: month="Jan";
            break;
    case 2: month= "feb";
            break;
    case 3: month= "march";
            break;
    case 4: month= "april";
            break;
    case 5: month= "may";
            break;
    case 6: month= "June";
            break;
    case 7: month= "July";
            break;
    case 8: month= "Aug";
            break;
    case 9: month= "Sept";
            break;
    case 10: month= "Oct";
            break;
    case 11: month= "Nov";
            break;
    case 12: month= "Dec";
            break;
    default: System.out.println("Enter valid no");  

    }

    return month;
}

}

到目前为止,这是我的(不正确的)测试类,但是我不确定如何实现“实际”以便能够使用assert equals?

package sem2pract3;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class Ex2Test {

int num;
String month;
Ex2 ex2;

@Before
public void setUp() throws Exception {
    num=2;
    ex2= new Ex2();
}

@Test
public void testMonth() {
    String expected= month;
    String actual= //Not sure what to put here 
    assertEquals(expected, actual);
}
}

2 个答案:

答案 0 :(得分:3)

actual是您的方法返回的内容。所以,例如,你可以这样做:

@Test
public void testMonth() {
    String expected = "feb";
    String actual = ex2.month(2);

    assertEquals(expected, actual);
}

答案 1 :(得分:0)

实际上是你获得调用实际代码的结果,或者换句话说是测试中的代码。

你不需要setUp方法,至少不需要第一次测试,用于建立或创建所有测试所需的上下文的setUp方法,通常这个setUp方法在你做TDD时通过重构出现。

示例代码:

public void test_month_1_is_january() {
    assertEquals(new Ex2().month(1), "jan");
}

测试它是一个使用你的类的具体例子,而不是一般规则,因为你需要对每种可能性进行测试,或者用你的代码以另一种方式思考。

在这个简单的例子中,您可以执行以下操作:

 public void test_all_months() {
   assertEquals(new Ex2().month(1), "jan");
   assertEquals(new Ex2().month(2), "feb");
 }