湘潭大学-软件工程-头歌-第十四章-软件测试-代码部分

junit实训入门篇

第一关

package step1;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import step1.JunitSub;
public class JunitSubTest {
    // 引入JunitSub对象
    JunitSub js = new JunitSub();
    int sub = js.sub(5,2);
    int testSub = 3;
    @Test
    public void testSub() {
        // 调用JunitSub类的sub方法,并将结果存储在testSub变量中
        testSub = js.sub(5,2);
        // 使用assertEquals方法验证结果是否正确
        assertEquals("错误:减法计算错误", 3, testSub);
    }
}

第二关

package step2;

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 JunitAnnotation {
    /*
     *以下Junit测试程序的输出结果为:
     *in before class
     *in before
     *in test
     *in after
     *in after class
     *请修改下面Begin/End内各个测试函数的注解,使输出结果逆序
     */
     /***********************Begin**************************/



   //execute before class
   @AfterClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @BeforeClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @After
   public void before() {
      System.out.println("in before");
   }

   //execute after test
   @Before
   public void after() {
      System.out.println("in after");
   }

   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }
    /************************End***************************/
}

第三关

package step3;

import static org.junit.Assert.*;
import org.junit.Test;

public class AssertionsTest {
	String obj1 = "junit";
	String obj2 = "junit";
	String obj3 = "test";
	String obj4 = "test";
	String obj5 = null;
	int var1 = 1;
	int var2 = 2;
	int[] arithmetic1 = { 1, 2, 3 };
	int[] arithmetic2 = { 1, 2, 3 };

	@Test
	public void test() {

		//请在下面的Begin/End内写添加断言测试的代码,不要改动其他地方的代码
		/***********************Begin**************************/


		/************************End***************************/
    }
}

第四关

package step4;


import org.junit.Test;


public class TestTimeOut {

     //请在下面的Begin/End内补全test()超时测试函数,要求如果超过1000毫秒执行未结束,就判定测试未通过
    /***********************Begin**************************/
    @Test(timeout=1000)
    public void test() {
        while(true){}
    }
    /************************End***************************/
}

junit 实训进阶篇

第一关

package step1;

import static org.junit.Assert.assertEquals; //静态导入
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import step1.Calculator;
/**
 * JUnit4的参数化测试
 */
@RunWith(Parameterized.class)
public class ParameterTest {
    private int input11;
    private int input22;
    private int expected;
    public ParameterTest(int input11, int input22, int expected){
        this.input11 = input11;
        this.input22 = input22;
        this.expected = expected;
    }
//在下面补2行代码,要求为单元测试传递4组参数,来验证Calculator中的sub函数编写是否正确
    @Parameters
    public static Collection prepareData(){
     return Arrays.asList(new Object[][]{
            {1, 2, -1}, // positive input values, expected negative output
            {5, 3, 2},  // positive input values, expected positive output
            {-1, -2, 1}, // negative input values, expected positive output
            {-5, -3, -2}  // negative input values, expected negative output
        });
    }
    @Test
    public void testSub(){
        Calculator cal = new Calculator();
        assertEquals(cal.sub(input11, input22), expected);
    }
}

第二关

package step2;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import step2.Person;
public class JunitException {
  @Rule
  public ExpectedException thrown = ExpectedException.none();
  @Test(expected = IllegalArgumentException.class)
  public void checkAge() {
      Person person = new Person();
      person.setAge(-1); // 如果这个方法没有抛出IllegalArgumentException,那么测试会失败
  }
}

第三关

package step3;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runner.JUnitCore;
// 添加 @RunWith(Suite.class) 注解
@RunWith(Suite.class)
// 添加 @Suite.SuiteClasses({CalculateTest.class, CarTest.class}) 注解,指示套件测试将运行这两个类
@Suite.SuiteClasses({
  CalculateTest.class, 
  CarTest.class
})
public class SuiteTest {
  public static void main(String[] args) {
      // 使用 JUnitCore 类运行套件测试
      JUnitCore runner = new JUnitCore();
      runner.run(SuiteTest.class);
  }
}

第四关

package step4;


import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
 public static void main(String[] args) {
  //请在Begin/End内加一行代码,要求如果测试类JunitSubTest.java中的测试都通过,则main函数会打印true
  /******************************Begin**************************************************/
JunitSubTest junitSubTest = new    JunitSubTest(); 
Result result = JUnitCore.runClasses(junitSubTest.getClass());
  /******************************End****************************************************/
    for (Failure failure : result.getFailures()) {
       System.out.println(failure.toString());
    }
    System.out.println(result.wasSuccessful());
 }
}

你可能感兴趣的:(软件工程专业课程学习,软件工程)