如何使用JUNIT测试ENUM

时间:2015-08-21 22:31:18

标签: java junit enums

如何使用JUNIT创建测试用例以测试ENUMS类型。下面我用枚举类型添加了我的代码。

public class TrafficProfileExtension {
public static enum CosProfileType {
    BENIGN ("BENIGN"), 
    CUSTOMER ("CUSTOMER"), 
    FRAME ("FRAME"),
    PPCO ("PPCO"),
    STANDARD ("STANDARD"),
    W_RED ("W-RED"),
    LEGACY("LEGACY"),
    OPTIONB ("OPTIONB");

 private final String cosProfileType;

 private CosProfileType(String s) {
     cosProfileType = s;
    }

    public boolean equalsName(String otherName){
        return (otherName == null)? false:cosProfileType.equals(otherName);
    }

    public String toString(){
       return cosProfileType;
    }
  }
}

我为我的枚举CosProfileType创建了一个测试用例,我在CosProfileType上收到错误。如何让这个测试用例工作?

@Test
   public void testAdd() {
    TrafficProfileExtension ext = new TrafficProfileExtension();
    assertEquals("FRAME", ext.CosProfileType.FRAME);

}

3 个答案:

答案 0 :(得分:3)

由于CosProfileType被声明为public static,因此它实际上是顶级类(枚举),因此您可以这样做

assertEquals("FRAME", CosProfileType.FRAME.name());

答案 1 :(得分:0)

您正在将String与永远不会相等的Enum进行比较。

尝试:

@Test
public void testAdd() {
    TrafficProfileExtension ext = new TrafficProfileExtension();
    assertEquals("FRAME", ext.CosProfileType.FRAME.toString());

}

答案 2 :(得分:0)

assertEquals("FRAME", CosProfileType.FRAME.name());

仅当字段和值都相同但在以下情况下无法使用时,它才有效:

FRAME ("frame_value")

更好地与

进行检查
assertEquals("FRAME", CosProfileType.FRAME.getFieldName());