Я пишу код java для проверки нескольких условий на if-else. Код работает правильно, но выполнить блок-тест сложно.Упростите несколько инструкций if-else для модульного тестирования
читает строки, которые содержат ключевое слово conditionOne
, conditionTwo
или другими ключевыми словами. hasConditionOneEnabled
и hasConditionTwoEnabled
являются булевыми значениями.
В моем реальном коде есть более else if
операторов, чем пример обеспечения. Может ли кто-нибудь помочь? Или дать мне некоторый намек на то, как сделать код короче, чем я могу написать модульный тест легче? Спасибо
boolean a = false;
boolean b = false;
if(line.contains("conditionOne")){
if(hasConditionOneEnabled){
a = true;
}else{
b = true;
}
}else if (line.contains("conditionTwo")){
if(hasConditionTwoEnabled){
a = true;
}else{
b = true;
}
}else{
a = true;
b = true;
}
if(a && b){
// do something 1
}else if(!a && b){
// do something 2
}else if(a && !b){
// do something 3
}else{
//both false, do nothing
}
Слишком сложные условные операторы - это [анти-шаблон] (http://c2.com/cgi/wiki?ArrowAntiPattern). Также см. [Этот вопрос о реорганизации его] (http://stackoverflow.com/questions/105602/need-refactoring-ideas-for-arrow-anti-pattern). – azurefrog
Создайте класс с a и b и извлеките условия в качестве отдельных методов. – assylias