使用对象上的断言进行Java junit测试
当我执行第一个测试用例时,它以绿色显示失败用例 但是当我执行第二个测试用例时,它将错误显示为使用对象上的断言进行Java junit测试,java,Java,当我执行第一个测试用例时,它以绿色显示失败用例 但是当我执行第二个测试用例时,它将错误显示为java.lang.AssertionError 我正在为这门课写测试用例 公共枚举DocDatatype{ public class DatatypeTest { private static final Log logger = LogFactory .getLog(TreeConstantTest.class); @Test public void
java.lang.AssertionError
我正在为这门课写测试用例
公共枚举DocDatatype{
public class DatatypeTest {
private static final Log logger = LogFactory
.getLog(TreeConstantTest.class);
@Test
public void testDatatypeFromName()
{
Datatype d= Datatype.fromString("Profile");
assertTrue((d.toString().compareToIgnoreCase("PROFILE") == 0));
}
@Test
public void testDatatypeFromName1()
{
Datatype d = Datatype.fromString("SupportDetail");
assertTrue((d.toString().compareToIgnoreCase("SUPPORT_DETAIL") == 0 ));
}
}
你需要的是看到实际价值的能力 您可以使用调试器,但这不是一个好的解决方案:如果您的测试由自动化系统运行,该怎么办 您需要将断言更改为能够提供更多信息的内容 请看这个JUnit断言equalsIgnoreCase的方法 另一种方法是提供故障消息:
PROFILE("Profile"),
SUPPORT_DETAIL("SupportDetail"),
这里的主要问题是缺少一些上下文,而这个数据类型类的用例有点奇怪(数据类型应该是枚举) 您实际上不需要这个
fromString
-方法。请看这个类:
public enum DataType {
PROFILE("Profile"),
SUPPORT_DETAIL("SupportDetail");
private String value;
private DataType(String value) {
this.value = value;
}
@Override
public String toString() {
return this.value;
}
}
然后你可以这样做你的测试,注意第三种测试方法:
public class DataTypeUtil {
public static DataType fromString(String value) {
return DataType.valueOf(value.toUpperCase()); // should check for null or blank
}
}
}
请注意-方法的值。它的作用与fromString
-方法的作用完全相同,您可以从enum
获得它
要点是您只需要enum
,而DataType
是您的最佳选择
希望这能以某种方式澄清您的问题:)
编辑:
如果我猜您的用例,您有一个具有特定格式或类型的文档。为什么不创建一个文档
类,将数据类型
作为对象上的枚举字段
问候,,
Thomas字符串“SupportDetail”
与字符串“SUPPORT\u DETAIL”
不匹配,即使忽略大小写。第二个有一个下划线。public enum DocDatatype{PROFILE(“PROFILE”),SUPPORT_DETAIL(“SupportDetail”),我正在为这个类编写测试用例如果你说基于你的枚举这应该是真的,那么在你的问题中包括枚举代码。AssertionError
,作为一个可丢弃的
,可以给你一个错误根本原因的详细信息。你应该检查一下。你发布的enum
代码的位不包括单元测试正在检查的fromString
或toString
的定义。DOC数据类型常量public enum DocDatatype{PROFILE(“PROFILE”)、SUPPORT_DETAIL(“SupportDetail”)、String name;DocDatatype(String name){this.name=name;}public String getName(){return name;}public String toString(){return name;}public static DocDatatype fromString(String value){for(DocDatatype type:DocDatatype.values(){if(type.getName().equals(value))返回类型;}抛出新的java.lang.IllegalArgumentException(value+“不是有效的dmDataType”);}
public class DataTypeUtil {
public static DataType fromString(String value) {
return DataType.valueOf(value.toUpperCase()); // should check for null or blank
}
}
public class DataTypeTest {
@Test
public void testDatatypeFromName() {
DataType d = DataTypeUtil.fromString("Profile");
assertTrue((d.toString().compareToIgnoreCase(DataType.PROFILE.toString()) == 0));
}
@Test(expected = IllegalArgumentException.class)
public void testDatatypeFromInvalidName() {
DataType d = DataTypeUtil.fromString("SupportDetail");
assertFalse((d.toString().compareToIgnoreCase(DataType.SUPPORT_DETAIL.toString()) == 0));
}
@Test
public void testDatatypeFromCorrectName() {
DataType d = DataTypeUtil.fromString("Support_Detail");
assertTrue((d.toString().compareToIgnoreCase(DataType.SUPPORT_DETAIL.toString()) == 0));
}
@Test
public void testGetValueFromEnum() throws Exception {
DataType dataType = DataType.valueOf("Profile".toUpperCase());
assertTrue(dataType == DataType.PROFILE);
}