JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行器
不再在main()函数中进行测试,main()函数中使用更少的方法,尽量不出现条件语句。
示例如下:
package com.geogle;
public class Main {
public static void main(String[] args) {
run();
}
private static void run() {
System.out.println("========Calc========");
System.out.println(Calc.Sum(10, 20));
System.out.println(Calc.Subtraction(20, 10));
}
}
利用Junit框架,使用assert方法来模块化测试各个方法
如Assert.assertEquals(int expected, int actual)
示例如下(示例):
先定义一个Calc类:
package com.geogle;
public class Calc {
public static int Sum(int numA,int numB){
return numA + numB;
}
public static int Subtraction(int numA,int numB){
return numA - numB;
}
}
再利用一个CalcTest类来测试Clac中的各个方法是否有效:
package com.geogle;
import org.junit.Assert;
import org.junit.Test;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class CalcTest {
@Test
public void sum(){
int numA = new Random().nextInt(10);
int numB = new Random().nextInt(10);
int sum = Calc.Sum(numA,numB);
Assert.assertEquals(numA+numB,sum);
}
@Test
public void subtraction(){
int numA = ThreadLocalRandom.current().nextInt(0,20);
int numB = ThreadLocalRandom.current().nextInt(0,20);
int result = Calc.Subtraction(numA,numB);
Assert.assertEquals(numA-numB,result);
}
}
当s1重新被赋予为s1+s2时,实际上s1指向的内容并非是被修改,而是将s1+s2放在另一处内存。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
package com.geogle;
import java.lang.StringBuilder;
import org.junit.Test;
public class StringBuilderTest {
@Test
public void demo() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("hello");
stringBuilder.append(" world");
System.out.println(stringBuilder);
stringBuilder.trimToSize(); //除去多余未占用内存
System.out.println(stringBuilder);
}
}
输出:
hello world
hello world