JUnit入门学习——第一次使用

来源:互联网 发布:php flash播放mp4 编辑:程序博客网 时间:2024/05/21 03:20
创建了一个maven项目用于初步学习JUnit,找了一个有bug的Calculator类来对此进行单元测试。

package com.cgy.myjunit;

public class Calculator {
private static int result; // 静态变量,用于存储运行结果

public void add(int n) {
result = result + n;
}

public void substract(int n) {
result = result - 1; // Bug: 正确的应该是 result =result-n
}

public void multiply(int n) {
} // 此方法尚未写好

public void divide(int n) {
result = result / n;
}

public void square(int n) {
result = n * n;
}

public void squareRoot(int n) {
for (;;)
; // Bug : 死循环
}

public void clear() { // 将结果清零
result = 0;
}

public int getResult() {
return result;
}
}


Calculator类在/src/main/java下类包创建好后,鼠标右键Calculator.java,选择new,如果没有发现类似junit的选项,选择other,并在向导框中输入“junit”,选择出现的junit test case选项,生成测试代码。本人使用junit版本为4.11,因此对话框中,勾选的是“New JUnit 4 test”,同时应该注意在maven项目下,生成的测试代码应该放在/src/test/main下,因此要改变对话框中source folder的路径,下方有一个“which method stubs would you like to create?”,暂时勾线setUp(后续学习),点击下一步勾选四个加减乘除方法,最后finish生成测试代码。
JUnit入门学习——第一次使用 - DAWN - CGYDAWNJUnit入门学习——第一次使用 - DAWN - CGYDAWN
  
生成的测试代码只是最基本的测试用例,需要添加我们自身的恶测试逻辑来完善这个测试代码。

package com.cgy.myjunit;

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class CalculatorTest {
private static Calculator calculator = new Calculator();

@Before
public void setUp() throws Exception {
calculator.clear();
}

@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());
}

@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}

@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
}

@Test
public void testDivide() {
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}

}


随后,在CalculatorTest.java文件上右键,“Run as”选择“JUnit Test”,结果如下图:
JUnit入门学习——第一次使用 - DAWN - CGYDAWN
 testAdd和testDivide测试成功,testSubstract测试失败,而testMultiply由于设置了Ignore,因此被忽略。
同应该注意,@Test标注的方法,均为void返回类型,且函数名有规律。
 
JUnit入门学习——第一次使用 - DAWN - CGYDAWN
 JUnit视图中,显示运行了4个测试,其中一个忽略,一个失败。

********************************************************************************************************************************************
测试代码中,用到的assertEquals方法函数原型为

void org.junit.Assert.assertEquals(long expected, long actual)

static public void assertEquals(long expected, long actual) {
assertEquals(null, expected, actual);
}

static public void assertEquals(String message, long expected, long actual) {
assertEquals(message, (Long) expected, (Long) actual);
}

static public void assertEquals(String message, Object expected,
Object actual) {
if (equalsRegardingNull(expected, actual)) {
return;
} else if (expected instanceof String && actual instanceof String) {
String cleanMessage = message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, (String) expected,
(String) actual);
} else {
failNotEquals(message, expected, actual);
}
}





0 0
原创粉丝点击