JUnit测试 书写练习(一)

目录

练习1 SumDigitsTest

练习2 VowelConsonantTest

测试类书写模板:

练习3 MockitoShoppingApp

练习4 MockShoppingApp


练习1 SumDigitsTest

计算机科学学生Peter开发的一个应用程序接受一个数并返回该数各位的和。您被分派的任务是在以下场景上创建测试用例:
取一位整数值作为输入的测试用例
取两位整数值作为输入的测试用例
取三位整数值作为输入的测试用例
在用户输入负值时使测试不通过的测试用例
在用户输入小数值时处理异常的测试用例

您将如何完成此任务?
 

SumDigis.java
package sumdigits;

public class SumDigits {
    public int sum(int num)
    {   int sum=0;
        while(num>0)
        {
            sum=sum+num%10;
            num=num/10;
        }
        return sum;
    }
    public static void main(String[] args) {
        // TODO code application logic here
    }  
}
SumDigitsTest.java
package sumdigits;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class SumDigitsTest {
    
    public SumDigitsTest() {
    }
    
    @BeforeClass
    public static void setUpClass() {
    }
    
    @AfterClass
    public static void tearDownClass() {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    //取一位整数值作为输入的测试用例
      @Test
    public void testsumdigits1() {
        System.out.println("Testing 一位整数");
        SumDigits sum = new SumDigits();
        int expResult = 5;
        int result = sum.sum(5);
        assertEquals(expResult, result);
    }
    
    //取两位整数值作为输入的测试用例
          @Test
    public void testsumdigits2() {
        System.out.println("Testing 两位整数");
        SumDigits sum = new SumDigits();
        int expResult = 7;
        int result = sum.sum(25);
        assertEquals(expResult, result);
    }
    
    //取三位整数值作为输入的测试用例
          @Test
    public void testsumdigits3() {
        System.out.println("Testing 三位整数");
        SumDigits sum = new SumDigits();
        int expResult = 6;
        int result = sum.sum(150);
        assertEquals(expResult, result);
    }
    
    //在用户输入负值时使测试不通过的测试用例
          @Test
    public void testsumdigits4() {
        System.out.println("Testing 负数不通过测试");
        SumDigits sum = new SumDigits();
        //  String expresult = null; 
        int expResult = -2;
        int result =sum.sum(-20);
        assertEquals(expResult,result);
    }
    
    //在用户输入小数值时处理异常的测试用例
@Test(expected = IllegalArgumentException.class)
	public void testsumdigits5(){
         SumDigits sum = new SumDigits();
         int expResult = 6;
         int result = sum.sum((int)150.00);    //强制数据类型转换
         assertEquals(expResult,result);        
        }

}

测试结果: 

练习2 VowelConsonantTest


Harry 开发了应用程序以检查输入的字符是元音还是辅音。该函数将一个字符取为输入,井在字符是元音字符的情况下返回vowel,否则返回consonant。现在他被分派的任务是通过为所有可能场景(例如检查元音和检查辅音)创建测试用例来测试此应用程序。如果测试用例不通过,应该显示相应的人可读的错误消息。
帮助Harry完成此任务。

VowelConsonant.java

package vowelconsonant;
public class VowelConsonant {
   public String check(String character)
    {
        String v="vowel";
        String c="consonant";
        if(character=="a"||character=="e"||character=="i"||character=="o"||character=="u")
        {
            return v;
        }
        else
        {
            return c;
        }
    }
    public static void main(String[] args) {
    }   
}
VowelConsonantTest.java
package vowel;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import vowelconsonant.VowelConsonant;

public class VowelTest {
    
    public VowelTest() {
    }
    
    @BeforeClass
    public static void setUpClass() {
    }
    
    @AfterClass
    public static void tearDownClass() {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    //字符是元音字符的情况下返回vowel
    @Test
    public void VowelTest1(){
    VowelConsonant v = new VowelConsonant();
    String expResult = "vowel";
    String result = v.check("o");
    assertEquals(expResult,result);
    }
    //字母是辅音字母的情况下返回consonant
        @Test
    public void VowelTest2(){
    VowelConsonant v = new VowelConsonant();
    String expResult = "consonant";
    String result = v.check("f");
    assertEquals(expResult,result);
    }
}

测试结果:

测试类书写模板:

@Test

public void 测试方法名(){

实例化java类对象;

期望值 = 手动计算测试用例的值;

实际值 = 实例化类对象.调用java方法(测试用例);

assertEquals(期望值,实际值);

}

练习3 MockitoShoppingApp

//MockitoShoppingApp
//pom.xml
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

//MyShoppingCartTest.java
public class MyShoppingCartTest {
    
    public MyShoppingCartTest() {
    }
    
    public MyShoppingCart cart = null;
    public MyStore storeMock = null;
    
    @Before
    public void setUp() {
    storeMock = Mockito.mock(MyStore.class);
    cart = new MyShoppingCart();
    cart.setStore(storeMock);  
    }
    
    @Test
    public void testCountNumberOfInteractions() throws Exception{
        ShoppingItem item1 = new ShoppingItem("IPhone",2);
        cart.addItem(item1);
        double total = cart.calculateTotalPrice();
        Mockito.verify(storeMock,Mockito.times(1)).getPrice(item1.getItemName());
        Mockito.verifyNoMoreInteractions(storeMock);
        
    }
    
    @Test
    public void testCalculateTotalPrice() throws Exception{
        ShoppingItem stubbedItem = new ShoppingItem("Speakers",5);
        Mockito.when(storeMock.getPrice("Speakers")).thenReturn(100.00);
        cart.addItem(stubbedItem);
    }
}

练习4 MockShoppingApp

//MockShoppingApp
//pom.xml  
<dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>

MyShoppingCartTest.java
public class MyShoppingCartTest {
    
    public MyShoppingCartTest() {
    }
    public MyShoppingCart cart = null;
    public MyStore storeMock = null;
    
    @Before
    public void initialize(){
    cart = new MyShoppingCart();
    storeMock = EasyMock.createMock(MyStore.class);
    cart.setStore(storeMock);  
    }
    
    @Test
    public void testShoppingCart(){
        EasyMock.expect(storeMock.getPrice("Iphone")).andReturn(100.00);
        EasyMock.expect(storeMock.getPrice("Speakers")).andReturn(20.00);
        
        EasyMock.replay(storeMock);
        ShoppingItem item1 = new ShoppingItem("Iphone",2);
        ShoppingItem item2 = new ShoppingItem("Speakers",5);
        cart.addItem(item1);
        cart.addItem(item2);
        double total = cart.calculateTotalPrice();
        assertEquals("Result",300.00,total,0);
        EasyMock.verify(storeMock);
    }
    
    @After 
    public void cleanup(){
        cart=null;
        storeMock=null;
    }
}

练习3:            练习4:

练习5 MobileSalesData

// MobileSalesData.java
public class MobileSalesData {

    public double mean;
    public double variance;
    public double StdDev;
    public double mean(int htc, int apple, int samsung, int motorola, int nokia){
        while(htc>=0 && apple>=0 && samsung>=0 && motorola>=0 && nokia>=0){
            mean = (htc+apple+samsung+motorola+nokia)/5;
            return mean;
        }
        return 0;
    }
    public double variance(int htc, int apple, int samsung, int motorola, int nokia){
        while(htc>=0 && apple>=0 && samsung>=0 && motorola>=0 && nokia>=0){
            mean = 0;
            mean = (htc+apple+samsung+motorola+nokia)/5;
            double v1,v2,v3,v4,v5,p1,p2,p3,p4,p5;
            v1= htc-mean;
            v2= apple-mean;
            v3= samsung-mean;
            v4= motorola-mean;
            v5= nokia-mean;
            p1= Math.pow(v1,2);
            p2= Math.pow(v2,2);
            p3= Math.pow(v3,2);
            p4= Math.pow(v4,2);
            p5= Math.pow(v5,2);
            variance = (p1+p2+p3+p4+p5)/5;
            return variance;
        }
        return 0;
    }
    public static void main(String[] args) {
        // TODO code application logic here
    }
    
}
// MobileSalesDataTest.java

public class MobileSalesDataTest {
    
    public MobileSalesDataTest() {
    }
    
    @BeforeClass
    ...
   @Test
   public void testMean(){
       System.out.println("mean");
       int htc = 2653;
       int apple = 2783;
       int samsung = 2187;
       int motorola = 2443;
       int nokia = 1782;
       MobileSalesData instance = new MobileSalesData();
       double expResult = 2369.0;
       double result = instance.mean(htc,apple,samsung,motorola,nokia);
       assertEquals(expResult,result,0.5);
   }
       @Test
       public void testMean2(){
        ...
       int motorola = -2443;
        ...
   }
       @Test
       public void testMean3(){
        ...
       int samsung = 0;
        ...
   }
       @Test
       public void testVariance(){
       System.out.println("variance");
       int htc = 2653;
       int apple = 2783;
       int samsung = 2187;
       int motorola = 2443;
       int nokia = 1782;
       MobileSalesData instance = new MobileSalesData();
       double expResult = 127044.2;
       double result = instance.variance(htc,apple,samsung,motorola,nokia);
       assertEquals(expResult,result,0.5);
   }
       @Test
       public void testVariance2(){
        ...
       int samsung = -2187;
        ...
   }
}

 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyrelion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值