软件测试总结--未完待续中

首先,看一个非常简单的例子,这是一个求最值的函数:

public class Largest {
	
  public Largest() {
  }
     public static int largest(int[] list){
    	 if(list.length==0)
    	   	 throw new RuntimeException("Empty list");

     int index,max=Integer.MIN_VALUE;
     for(index=0;index<list.length;index++){
       if(list[index]>max){
         max=list[index];
       }
     }
     return max;
     
   }
  
}


 

下面来看看如何对他进行测试:

import junit.framework.TestCase;


public class LargestTest extends TestCase {

	 public void testSimple(){
		    assertEquals(9,Largest.largest(new int[]{9,8,7})); 
		  }
	 
	 public void testOrder1(){
	     assertEquals(9,Largest.largest(new int[]{7,9,8}));
	   }
	   
	 public void testOrder2(){
	    assertEquals(9,Largest.largest(new int[]{7,8,9}));
	  }
	 
	 public void testDups(){
	     assertEquals(9,Largest.largest(new int[]{9,7,9,8}));
	   }
	   
	  public void testOne(){
	      assertEquals(1,Largest.largest(new int[]{1}));
	    }
		
	  public void testNegative(){
		  int [] negList=new int[]{-9,-8,-7};
		  assertEquals(-7,Largest.largest(negList));
		}
	  
	  public void testEmpty(){
		    try{
		      Largest.largest(new int[]{});
		      fail("Shoud have thrown an exception");
		    }
		    catch(RuntimeException e){
		      assertTrue(true);
		    }
		  

		    
		}
	  
	 
}

在Java,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值