zoukankan      html  css  js  c++  java
  • junit测试套件

    在实际项目中,随着项目进度的开展,单元测试类会越来越多,可是直到现在我们还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的。为了解决这个问题,JUnit 提供了一种批量运行测试类的方法,叫做测试套件。

    这样,每次需要验证系统功能正确性时,只执行一个或几个测试套件便可以了。测试套件的写法非常简单,我们需要遵循以下规则:

    1.  创建一个空类作为测试套件的入口。

    2.  使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。

    3.  将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。

    4.  将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。

    5.  保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。

    现在OK了,我们来写代码,这里我写2个测试类,然后让这2个类形成一个测试套件,来一起被测试:

    package test.junit4test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class LinkinTest1
    {
    
    	@Test
    	public void testTrue()
    	{
    		System.out.println("测试一。。。");
    		Assert.assertTrue(true);
    	}
    
    }
    
    package test.junit4test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class LinkinTest2
    {
    
    	@Test
    	public void testTrue()
    	{
    		System.out.println("测试二。。。");
    		Assert.assertFalse(false);
    	}
    
    }
    
    package test.junit4test;
    
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses({ LinkinTest1.class, LinkinTest2.class })
    public class LinkinAllTest
    {
    
    }
    


    上例代码中,我将2个测试类放入了测试套件LinkinAllTest中,在 Eclipse 中运行测试套件,可以看到2个测试类被调用执行了。测试套件中不仅可以包含基本的测试类,而且可以包含其它的测试套件,这样可以很方便的分层管理不同模块的单元测试代码。

    注意:一定要保证测试套件之间没有循环包含关系,否则无尽的循环就会出现在我们的面前。

    OK,最后我们写一个测试组件又包含测试组件的例子结束这篇博客。

    package test.junit4test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class LinkinTest1
    {
    
    	@Test
    	public void testTrue()
    	{
    		System.out.println("测试一。。。");
    		Assert.assertTrue(true);
    	}
    
    }
    
    package test.junit4test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class LinkinTest2
    {
    
    	@Test
    	public void testTrue()
    	{
    		System.out.println("测试二。。。");
    		Assert.assertFalse(false);
    	}
    
    }
    
    package test.junit4test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class LinkinTest3
    {
    
    	@Test
    	public void testTrue()
    	{
    		System.out.println("测试三。。。");
    		Assert.assertEquals("1", "1");
    	}
    
    }
    
    package test.junit4test;
    
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses({ LinkinTest1.class, LinkinTest2.class })
    public class LinkinAllTest1
    {
    
    }
    package test.junit4test;
    
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses({ LinkinAllTest1.class, LinkinTest3.class })
    public class LinkinAllTest2
    {
    
    }
    



  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5232887.html
Copyright © 2011-2022 走看看