2015-06-04 7 views
3

У меня есть метод для проверки окуня строки:Строка проверки состояния стенает тест

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. Я не понимаю, почему состояние терпит неудачу.

ответ

1

Если какая-либо И или ИЛИ позволены, вам нужно

if(grouper==null || !(grouper.equalsIgnoreCase("AND") || grouper.equalsIgnoreCase("OR"))) 

В противном случае, если окуня является «ИЛИ», это не равно «И» и условие истинно, и если окуня является «И» , он не равен «OR», и условие истинно.

Кроме того, вы можете удалить проверку grouper.equals("").

Смежные вопросы