有人可以指导我如何在java中执行JUnit测试。我观看过youtube视频,但我发现很难理解获得更多补码单元测试的概念。
http://www.youtube.com/watch?v=lYnMyi81hrs http://www.youtube.com/watch?v=KX6CgjHciXU
例如,我该如何测试此代码?
text = "I was chosen";
JButton button1 = new Jbutton("");
JButton button2 = new Jbutton("");
JButton button3 = new Jbutton("");
List<JButton> buttons = Arrays.asList(button1, button2, button3);
Random r = new Random();
buttons.get(r.nextInt(buttons.size())).setText(text);
并且还测试方法中的大块代码并在其他地方调用。
编辑:
包测试;
import javax.swing.JOptionPane;
public class test {
String sign = "!";
String notSign = "-";
public test(){
String test = JOptionPane.showInputDialog("Please write a sign: ");
if (test.equals("!")){
sign1();
}
else if (test.equals("-")){
sign2();
}
}
public void sign1(){
sign = "*";
}
public void sign2(){
notSign = "/";
}
public static void main(String args[]){
new test();
}
}
编辑2:
原因,我想知道Junit测试是如何工作的,因为,我正在为我的拼贴工作这个项目,在完成我的代码之后,它产生了错误,我一遍又一遍地阅读代码,并且没有任何线索臭虫来自哪里。是否有更好的方法来查找错误并修复它们?
答案 0 :(得分:1)
您可以测试其中一个按钮的名称是否等于文字:
assertTrue(button1.getText().equals(text) || button2.getText().equals(text) || button3.getText().equals(text))
答案 1 :(得分:1)
我一直在那里,一开始很难,但通过练习,你可以变得更好。这是我使用的链接http://www.tutorialspoint.com/junit/index.htm,您也可以从中学习。
答案 2 :(得分:1)
首先,IMO,我从单元测试GUI的东西中看不出任何正面收益。 (完全取决于情况)
其次,你应该测试方法:
e.g。采取方法:
public int add(int i, int j) {
return i+j;
}
现在,要对这段代码进行单元测试,我们会这样做:
public void shouldReturn5WhenAdding2And3 {
// When
int result = testSubject.add(2, 3);
// Then
assertEquals(result, 5);
}
现在进入您的代码: 我建议将以下代码输出并放入其自己的方法中:
Random r = new Random();
buttons.get(r.nextInt(buttons.size())).setText(text);
e.g。
public void printTextOnRandomButton(List<JButton> buttons) {
Random r = new Random();
buttons.get(r.nextInt(buttons.size())).setText(text);
}
然后你可以在单元测试中传入一个按钮列表,并声明其中一个按钮有文本:
public void oneOfButtonsShouldHaveText() {
// Given
List<JButton> buttons = testSubject.getButtons();
// You don't have to get the list of buttons from the tested class, you could
// create a list of buttons within the test.
String text = "I was chosen";
// When
testSubject.printTextOnRandomButton(buttons);
// Then
assertTrue(button1.getText().equals(text) || button2.getText().equals(text) || button3.getText().equals(text));
}
编辑:我可能倾向于在断言中使用XOR而不是OR。