如何将测试写入当前方法?我使用jUnit 4。
public void setImage() {
if(conditionOne){
myView.setImageOne();
} else {
myView.setImageTwo();
}
}
答案 0 :(得分:4)
您需要编写两个测试来涵盖以下两种情况:
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
}
}
答案 1 :(得分:1)
好的......你写这个方法的方式有一个缺陷。有一种叫做可测试的代码。这是一个讨论可测试代码的链接(how to write testable code and why it matters)。
您在上面写的方法是非确定性的。这意味着该方法可以在不同的运行中表现出不同的行为,即使它具有相同的输入。在你的情况下,你没有输入。
目前,您的原始方法基于方法的环境而不是输入。这种做法可能会使代码难以编写,在某些情况下无法为您的代码编写适当的测试。
所以这就是你想要它的样子......
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对象。