1.怎样创建一个java Unit test
往简单了说,在没有返回值的方法前加上@Test ,然后将junit的jar包引入就好了。。这个ide都会有的,直接引入就行了,简单代码如下:然后run as junit test就可以运行了
public class IntegerTest {
@Test
public void test() {
Integer i1 = new Integer(2) ;
Integer i2 = new Integer(2) ;
Integer i3 = 35;
Integer i4 = 35;
System.out.println(i3==i4);
}
}
2.java junit单元测试怎么写
package com.yuanqi.zfb.test;
import org.junit.Test;
import com.yuanqi.zfb.util.VerifyCodeUtils;
public class Atest {
@Test
public void test(){
String verifycode =VerifyCodeUtils.generateVerifyCode(8);
System.out.println(verifycode);
}
@Test
public void test2(){
// String str="2015-11-23 11:23:44";
/* boolean b= str.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}");
if(b){
System.out.println("ok");
}else{
System.out.println("222222");
}*/
String str="2015112311:23:44";
boolean b= str.matches("\\d{10}:\\d{2}:\\d{2}");
System.out.println(b);
}
@Test
public void test3(){
String trTime="2014112800:05:48";
String inyear=trTime.substring(0, 4);
String inmonth=trTime.substring(4,6);
String inday=trTime.substring(6,8);
String intime=trTime.substring(8);
String time=inyear+"-"+inmonth+"-"+inday+" "+intime;
System.out.println(time);
}
}
3.Java Junit Test 要怎么写
一般不用写,直接测试方法,在测试的方法上加上注解@Test
import org.junit.Test;
public class TestJunit {
@Test
public void TestSaveMethod(){
Food food=new Food("红烧肉", new BigDecimal(45.5).setScale(2, BigDecimal.ROUND_HALF_UP), "hsr.jpg");
SaveFood(food);
}
public void SaveFood(Food food){
if(food!=null){
food.setId(UUID.randomUUID().toString());
System.out.println("Food Save is OK!");
System.out.println("当前ID:"+food.getId()+" 名称:"+food.getName()+" 单价:"+food.getPrice());
}else{
System.out.println("Food Save is False!");
}
}
}
class Food implements Serializable{
private String id;
private String name;
private BigDecimal price;
private String icon;
public Food(String name,BigDecimal price,String icon) {
this.name=name;
this.price=price;
this.icon=icon;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public BigDecimal getPrice() {
return price;
}
public String getIcon() {
return icon;
}
}
//这样的话RUN 的时候就会出现JUnit测试
4.java 怎么写junit测试用例
文件名:Calutor.java
package com.sc.zy;
public class Calutor {
public int add(int num1,int num2){
return num1+num2;
}
public int sub(int num1,int num2){
return num1-num2;
}
public int mul(int num1,int num2){
return num1*num2;
}
public int div(int num1,int num2){
if(num2==0){
throw new MyException();
}
return num1/num2;
}
}
文件名:MyException.Java
package com.sc.zy;
public class MyException extends RuntimeException {
}
文件名:CalutorTest.java
package com.sc.zy;
import junit.framework.Assert;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class CalutorTest {
private Calutor c;
@BeforeClass
public static void setUpBeforeClass(){
System.out.println("=====static init=======");
}
@AfterClass
public static void tearDownAfterClass(){
System.out.println("=====static destory=======");
}
@Before
public void setUp(){
System.out.println("=======@before=======");
c=new Calutor();
}
@After
public void tearDown(){
System.out.println("=======@after=======");
}
@Test
public void testAdd(){
int sum=c.add(1, 2);
Assert.assertEquals(3, sum);
}
@Test(expected=com.sc.zy.MyException.class)
public void testDiv(){
c.div(1, 0);
}
@Ignore
public void testDiv1(){
int d=c.div(1, 5);
Assert.assertEquals(0, d);
}
}
5.Java开发如何编写出优秀的Java单元测试
1. 使用框架来用于单元测试
Java提供了若干用于单元测试的框架。TestNG和JUnit是最流行的测试框架。JUnit和TestNG的一些重要功能:
易于设置和运行。
支持注释
允许忽略或分组并一起执行某些测试。
支持参数化测试,即通过在运行时指定不同的值来运行单元测试。
通过与构建工具,如Ant,Maven和Gradle集成来支持自动化的测试执行。
EasyMock是一个模拟框架,是单元测试框架,如JUnit和TestNG的补充。EasyMock本身不是一个完整的框架。它只是添加了创建模拟对象以便于测试的能力。例如,我们想要测试的一个方法可以调用从数据库获取数据的DAO类。在这种情况下,EasyMock可用于创建返回硬编码数据的MockDAO。这使我们能够轻松地测试我们意向的方法,而不必担心数据库访问。
2. 谨慎使用测试驱动开发!
测试驱动开发(TDD)是一个软件开发过程,在这过程中,在开始任何编码之前,我们基于需求来编写测试。由于还没有编码,测试最初会失败。然后写入最小量的代码以通过测试。然后重构代码,直到被优化。
目标是编写覆盖所有需求的测试,而不是一开始就写代码,却可能甚至都不能满足需求。TDD是伟大的,因为它导致简单的模块化代码,且易于维护。总体开发速度加快,容易发现缺陷。此外,单元测试被创建作为TDD方法的副产品。
然而,TDD可能不适合所有的情况。在设计复杂的项目中,专注于最简单的设计以便于通过测试用例,而不提前思考可能会导致巨大的代码更改。此外,TDD方法难以用于与遗留系统,GUI应用程序或与数据库一起工作的应用程序交互的系统。另外,测试需要随着代码的改变而更新。
因此,在决定采用TDD方法之前,应考虑上述因素,并应根据项目的性质采取措施。
3. 测量代码覆盖率
代码覆盖率衡量(以百分比表示)了在运行单元测试时执行的代码量。通常,高覆盖率的代码包含未检测到的错误的几率要低,因为其更多的源代码在测试过程中被执行。测量代码覆盖率的一些最佳做法包括:
使用代码覆盖工具,如Clover,Corbetura,JaCoCo或Sonar。使用工具可以提高测试质量,因为这些工具可以指出未经测试的代码区域,让你能够开发开发额外的测试来覆盖这些领域。
每当写入新功能时,立即写新的测试覆盖。
确保有测试用例覆盖代码的所有分支,即if / else语句。
高代码覆盖不能保证测试是完美的,所以要小心!
4. 尽可能将测试数据外部化
在JUnit4之前,测试用例要运行的数据必须硬编码到测试用例中。这导致了限制,为了使用不同的数据运行测试,测试用例代码必须修改。但是,JUnit4以及TestNG支持外部化测试数据,以便可以针对不同的数据集运行测试用例,而无需更改源代码。
5. 使用断言而不是Print语句
许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。
6. 构建具有确定性结果的测试
一些方法不具有确定性结果,即该方法的输出不是预先知道的,并且每一次都可以改变
7. 除了正面情景外,还要测试负面情景和边缘情况
通常,开发人员会花费大量的时间和精力编写测试用例,以确保应用程序按预期工作。然而,测试负面测试用例也很重要。负面测试用例指的是测试系统是否可以处理无效数据的测试用例。例如,考虑一个简单的函数,它能读取长度为8的字母数字值,由用户键入。除了字母数字值,应测试以下负面测试用例:
用户指定非字母数字值,如特殊字符。
用户指定空值。
用户指定大于或小于8个字符的值。
类似地,边界测试用例测试系统是否适用于极端值。例如,如果用户希望输入从1到100的数字值,则1和100是边界值,对这些值进行测试系统是非常重要的。
转载请注明出处育才学习网 » javaunittest怎么写