- 论坛徽章:
- 0
|
junit4新特性-测试必备利器 2
三、以下来源于:http://q.sohu.com/forum/5/topic/1531298
下面上三种基本的测试用例的程序编写:
1.基本测试- [java] view plaincopyprint?import static org.junit.Assert.*;
- import org.apache.commons.logging.*;
- import org.junit.*;
-
-
- public class Test1{
- private static Log log = LogFactory.getLog(Test1.class);
-
- @Before//每个测试单元执行前执行该方法,方法级的前置,当然还有类级别的前置BeforeClass,只执行一次
- public void init() {
- log.info("init.....");
- }
-
- @After//每个测试单元执行后执行该方法,方法级的后置,当然还有类级别的后置AfterClass,只执行一次
- public void destory() {
- log.info("release resource");
- }
-
- public void functionOne() {
- System.out.println("");
- }
-
- @Test(expected=NullPointerException.class)//指定抛出指定的异常
- public void functionError() {
- String test = null;
- // assertNull(test);
- test.toString();
- }
-
- @Test
- public void Equals() {
- String testPoint = new String("true");
- String testTargt = new String("true1");
- assertEquals(testPoint, testTargt);
- }
-
- @Ignore("此测试已被忽略")
- @Test(timeout=1)//测试运行时间 (单位:millisecond)
- public void timeout() {
- String testPoint = new String("true");
- String testTargt = new String("true1");
- assertTrue("Pattern did not validate zip code", true);
- }
-
- }
- import static org.junit.Assert.*;
- import org.apache.commons.logging.*;
- import org.junit.*;
- public class Test1{
- private static Log log = LogFactory.getLog(Test1.class);
- @Before//每个测试单元执行前执行该方法,方法级的前置,当然还有类级别的前置BeforeClass,只执行一次
- public void init() {
- log.info("init.....");
- }
- @After//每个测试单元执行后执行该方法,方法级的后置,当然还有类级别的后置AfterClass,只执行一次
- public void destory() {
- log.info("release resource");
- }
- public void functionOne() {
- System.out.println("");
- }
- @Test(expected=NullPointerException.class)//指定抛出指定的异常
- public void functionError() {
- String test = null;
- // assertNull(test);
- test.toString();
- }
- @Test
- public void Equals() {
- String testPoint = new String("true");
- String testTargt = new String("true1");
- assertEquals(testPoint, testTargt);
- }
-
- @Ignore("此测试已被忽略")
- @Test(timeout=1)//测试运行时间 (单位:millisecond)
- public void timeout() {
- String testPoint = new String("true");
- String testTargt = new String("true1");
- assertTrue("Pattern did not validate zip code", true);
- }
- }
复制代码 2.套件测试
测试用例类1:Test1.java
- [java] view plaincopyprint?public class Test1 {
- @Test
- public void test1(){
- System.out.println("test1");
- }
-
- @Test
- public void test2(){
- System.out.println("test2");
- }
- }
- public class Test1 {
- @Test
- public void test1(){
- System.out.println("test1");
- }
-
- @Test
- public void test2(){
- System.out.println("test2");
- }
- }
复制代码 测试用例类2:Test2.java
- [java] view plaincopyprint?public class Test2 {
- @Test
- public void Tets3(){
- System.out.println("test3");
- }
- @Test
- public void Test4(){
- System.out.println("test4");
- }
- }
- public class Test2 {
- @Test
- public void Tets3(){
- System.out.println("test3");
- }
- @Test
- public void Test4(){
- System.out.println("test4");
- }
- }
复制代码 测试套件类:- /**
- * 在 JUnit 4 中,套件语义被两个新注释所替代。
- * 第一个是 @RunWith,设计它是为了方便让不同的运行器
- * (除了构建进框架的运行器)执行一个特别的测试类。
- * JUnit 4 绑定一个叫做 Suite 的套件运行器,
- * 必须在 @RunWith 注释中指定这个运行器。
- * 不仅如此,还必须提供另一项叫做 @SuiteClasses 的注释,
- * 它将一个意欲表示测试套件的类列表作为参数。
- * @author JersoN
- *
- */
- [java] view plaincopyprint?@RunWith(Suite.class)
- @SuiteClasses({Test1.class,Test2.class})
- public class SuiteTest {
-
- /*在这里还可以继续添加新的测试@Test*/
-
- }
- @RunWith(Suite.class)
- @SuiteClasses({Test1.class,Test2.class})
- public class SuiteTest {
- /*在这里还可以继续添加新的测试@Test*/
- }
复制代码 3.参数测试
参数测试代码要多一些- [java] view plaincopyprint?import java.util.*;
- import org.apache.commons.logging.*;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.junit.runners.Parameterized;
- import org.junit.runners.Parameterized.Parameters;
- import static org.junit.Assert.*;
-
- @RunWith(Parameterized.class)//指定此测试类使用测试时使用参数集进行测试
- public class MainTest {
- Log log = LogFactory.getLog(MainTest.class);
-
- @Test
- public void testEqual() {
- assertTrue(source.equals(target));
- }
-
- @Test
- public void testStringLength(){
-
- //可以看到以往做参数测试得把测试的参数传递进来,当我们要测试多个参数的时候很麻烦,Juint4用了更好的实现解决这个问题,你可以把定义的多个参数用于不同的测试
- assertTrue(source.length()==target.length());
- }
-
- @Parameters
- public static Collection params() {
- return Arrays.asList(new Object[][] {
- { "22101", "22101" },
- { "221x1", "22101" },
- { "22101-5150", "22101"},
- { "221015150", "221015150" }
- });
- }
-
- /**
- * 以下是为参数化测试所做的编码
- */
- private String source;
- private String target;
-
- /**
- * 参数化测试必须的构造函数
- * @param source 对应参数集中的第一个参数
- * @param target 对应参数集中的第二个参数
- */
- public MainTest(String source,String target){
- this.source = source;
- this.target = target;
- }
-
- public String getSource() {
- return source;
- }
- public void setSource(String source) {
- this.source = source;
- }
- public String getTarget() {
- return target;
- }
- public void setTarget(String target) {
- this.target = target;
- }
-
- }
复制代码 |
|