字符串条件检查测试失败
String condition check failing for test
我有一个验证石斑鱼字符串的方法:
public String validateGrouper(String grouper)
{
if(grouper!=null)
grouper = grouper.trim();
if(grouper==null || grouper.equals("") || !grouper.equalsIgnoreCase("AND") || !grouper.equalsIgnoreCase("OR"))
{
System.out.println("Trap for grouper validation triggered with grouper: "+grouper);
grouper="AND";
}
else
grouper = grouper.toUpperCase();
return grouper;
}
我运行反对这个测试:
@Test
public void testValidateGrouper(){
DBUtils dbUtils = new DBUtils();
assertEquals("Expect empty string to be replaced by AND","AND",dbUtils.validateGrouper(""));
assertEquals("Expect spaced out string to be replaced by AND","AND",dbUtils.validateGrouper(" "));
assertEquals("Expect the lower case and to be used as AND","AND",dbUtils.validateGrouper("and"));
assertEquals("Expect the upper case AND to be used as AND","AND",dbUtils.validateGrouper("AND"));
assertEquals("Expect the word CART to be ignored and replaced by AND","AND",dbUtils.validateGrouper("CART"));
assertEquals("Expect AND to be used as the grouper if no grouper is provided","AND",dbUtils.validateGrouper(null));
assertEquals("Expect the lower case or to be used as OR","OR",dbUtils.validateGrouper("or"));
assertEquals("Expect the upper case OR to be used as OR","OR",dbUtils.validateGrouper("OR"));
}
我发现尽管使用 AND
和 OR
,条件总是会被触发。我不明白为什么条件失败。
如果允许使用 AND 或 OR,您需要
if(grouper==null || !(grouper.equalsIgnoreCase("AND") || grouper.equalsIgnoreCase("OR")))
否则,如果grouper为"OR",则不等于"AND"且条件为真,如果grouper为"AND",则不等于"OR"并且条件为真。
此外,您可以删除 grouper.equals("")
检查。
我有一个验证石斑鱼字符串的方法:
public String validateGrouper(String grouper)
{
if(grouper!=null)
grouper = grouper.trim();
if(grouper==null || grouper.equals("") || !grouper.equalsIgnoreCase("AND") || !grouper.equalsIgnoreCase("OR"))
{
System.out.println("Trap for grouper validation triggered with grouper: "+grouper);
grouper="AND";
}
else
grouper = grouper.toUpperCase();
return grouper;
}
我运行反对这个测试:
@Test
public void testValidateGrouper(){
DBUtils dbUtils = new DBUtils();
assertEquals("Expect empty string to be replaced by AND","AND",dbUtils.validateGrouper(""));
assertEquals("Expect spaced out string to be replaced by AND","AND",dbUtils.validateGrouper(" "));
assertEquals("Expect the lower case and to be used as AND","AND",dbUtils.validateGrouper("and"));
assertEquals("Expect the upper case AND to be used as AND","AND",dbUtils.validateGrouper("AND"));
assertEquals("Expect the word CART to be ignored and replaced by AND","AND",dbUtils.validateGrouper("CART"));
assertEquals("Expect AND to be used as the grouper if no grouper is provided","AND",dbUtils.validateGrouper(null));
assertEquals("Expect the lower case or to be used as OR","OR",dbUtils.validateGrouper("or"));
assertEquals("Expect the upper case OR to be used as OR","OR",dbUtils.validateGrouper("OR"));
}
我发现尽管使用 AND
和 OR
,条件总是会被触发。我不明白为什么条件失败。
如果允许使用 AND 或 OR,您需要
if(grouper==null || !(grouper.equalsIgnoreCase("AND") || grouper.equalsIgnoreCase("OR")))
否则,如果grouper为"OR",则不等于"AND"且条件为真,如果grouper为"AND",则不等于"OR"并且条件为真。
此外,您可以删除 grouper.equals("")
检查。