Junit学习

  1 Junit——用于编写运行可重复发自动化测试的开源测试框架
  2 这里用Eclipse IDE
  3 其实不管是Eclipse还是Intellij IDEA都是差不多的
  4 
  5 使用步骤:
  6 1.new a project,then 
  7 Build Path
  8 Add Library
  9 Junit 4
 10 
 11 2.编写好将要测试的类及方法
 12 3.创建另一个类,用于测试(一般都需要建一个和src并行的文件夹,因为不要把测试文件和源文件放在一起)
 13 
 14 测试类注解介绍
 15 @Test+方法:
 16 指示一个测试用例
 17 
 18 @Before+方法:
 19 表示该方法必须在每个测试之前运行,一遍测试某些先决条件(注意:每个测试用例之前)
 20 
 21 @BeforeClass+方法:
 22 指示附着的静态方法,在所有的测试之前必须运行一次,发生这种情况时一般是测试计算共享配置方法如连接到数据库(注意:是整个类执行之后)
 23 
 24 @After+方法:
 25 测试后执行的内容,比如重置某些必要的变量、删除某些变量等必要操作。(注意:每个测试用例之后)
 26 
 27 @AfterClass+方法:
 28 在所有测试类执行完之后执行,此方法为静态(注意:是整个类执行之后)
 29 
 30 @Ignore+方法:
 31 不执行该方法
 32 
 33 注意:必须要将@BeforeClass、@AfterClass声明为静态
 34 
 35 
 36 需要导入的包:
 37 org.junit.*
 38 static org.junit.Assert.*; //静态的
 39 
 40 
 41 断言
 42 1.void assertEquals(String 可选message,expectedValue,actualValue)
 43 2.void assertTrue(String 可选message,boolean value)
 44   void assertFalse(String 可选message,boolean value)
 45 3.void assertNotNull(String 可选message,Object o)
 46   void assertNull(String 可选message,Object o)
 47 4.void assertSame(String 可选message,Object expect,Object actual)
 48   void assertNotSame(String 可选message,Object expect,Object actual)
 49 5.void assertArrayEquals(String mes,expectedArr, actualArr)
 50 
 51 
 52 
 53 套件测试
 54 ——捆绑几个单元测试用例并且一起执行它们
 55 使用注解:
 56 @RunWith  
 57 @Suite(中文:一套)
 58 
 59 使用:
 60 1.建立需要捆绑测试的所有测试用例(多个不同的测试类):Testi(i=1,2,3...)
 61 2.建立新类:TestSuite:
 62 import org.junit.runner.RunWith;
 63 import org.junit.runner.Suite;
 64 @RunWith(Suite.class)
 65 @Suite.SuiteClass({Test1.class,Test2.class,,,})
 66  //使用{},将需要捆绑的类.class用逗号分隔,形成数组。
 67  //注意:上面两条注解是在主类之前的,未在其中。因为它们注释的是类,而不是方法
 68 public class Main{
 69 //something
 70 }
 71 
 72 package Junit;
 73 
 74 import org.junit.runner.RunWith;
 75 import org.junit.runners.Suite;
 76 
 77 @RunWith(Suite.class)
 78 @Suite.SuiteClasses({
 79         FuncTest.class,
 80         FuncTest2.class,
 81         AtExplaination.class
 82 })
 83 
 84 public class SuiteTest {
 85 }
 86 
 87 
 88 
 89 时间测试
 90 如果一个测试用例在指定的毫秒级别时间里为执行完,我们可以人为认定它为失败
 91 ————timeout参数、@Test,
 92 即@Test(timeout=n)
 93 
 94 package Junit;
 95 import org.junit.Test;
 96 
 97 public class Timeout {
 98     @Test(timeout = 100)
 99     public void timeTest(){
100         while (true){
101 
102         }
103     }
104 }
105 
106 
107 
108 异常测试——@Test(expected = AClass.class)
109 eg:@Test(expected=ArithmeticException.class)
110 
111 
112 
113 参数化测试
114 将一系列参数用于一个测试类的测试
115 1.该类注解为@RunWith(Parameterized.class)
116 2.该类有一个构造方法,用于存储测试数据
117 3.该类有一个静态方法生成并返回测试数据,必须有注解@Parameters (注意:必须是静态)
118 4.有一个测试用例@Test
119 
120 package Junit;
121 
122 import org.junit.Test;
123 import org.junit.runner.RunWith;
124 import org.junit.runners.Parameterized;
125 import static org.junit.Assert.*;
126 import java.util.Arrays;
127 import java.util.Collection;
128 
129 @RunWith(Parameterized.class)
130 public class ParameterizedTest {
131     int expected;
132     int first;
133     int second;
134     public ParameterizedTest(int expected,int first,int second){
135         this.expected =expected;
136         this.first =first;
137         this.second = second;
138     }
139 
140     @Parameterized.Parameters
141     public static Collection add(){
142         return Arrays.asList(new Integer[][]{{5,2,3},{9,4,5},{8,3,5},{1,2,1}});//为什么用int不行
143     }
144     @Test
145     public void sum(){
146         assertEquals(expected,add(first,second));
147     }
148 
149     public static int add(int a,int b){
150         return a+b;
151     }
152 
153 }
154 
155 
156 测试规则。。。

 

posted @ 2019-01-12 18:19  Edwin_Xu  阅读(257)  评论(0编辑  收藏  举报