[英]JUnit test if else case
如何寫測試到當前方法? 我使用的是jUnit 4。
public void setImage() {
if(conditionOne){
myView.setImageOne();
} else {
myView.setImageTwo();
}
}
您需要編寫兩個測試來涵蓋以下兩種情況:
import org.junit.Test;
public class SetImageTest {
@Test
public void testSetImageForConditionOne() {
//write test to make conditionOne true
}
@Test
public void testSetImageForElseCondition() {
//write test to make conditionOne false
}
}
好的,您編寫此方法的方式存在缺陷。 有一種叫做可測試的代碼。 這是討論可測試代碼的鏈接( 如何編寫可測試代碼以及為什么如此重要 )。
您上面編寫的方法是不確定的。 這意味着該方法即使在輸入相同的情況下,在不同的運行過程中仍可能表現出不同的行為。 在您的情況下,您沒有輸入。
當前,您的原始方法基於方法的環境,而不是輸入。 這種做法可能非常困難,在某些情況下甚至不可能為您的代碼編寫適當的測試。
所以這就是您想要的樣子...
public void setImage(boolean conditionOne) {
if(conditionOne){
myView.setImageOne();
} else {
myView.setImageTwo();
}
}
既然測試是確定性的,那么您要么必須測試環境中的變量,要么具有return語句。
因此(添加return語句),您可以執行此操作。
public static void setImage(boolean conditionOne, type myView) {
if(conditionOne){
myView.setImageOne();
} else {
myView.setImageTwo();
}
return myView;
}
現在您的測試可以看起來像這樣
public class SetImageTest {
@Test
public void testSetImage() {
type myViewOrig;
//define myViewOrig
type myView1;
//define myView1
type myView2;
//define myView2
assertEquals(setImage(<true>, type myViewOrig), myView1);
assertEquals(setImage(<false>, type myViewOrig), myView2);
}
}
或者,您可以在運行setImage方法后僅測試myView對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.