junit和testng对BeforeClass和AfterClass注解的不同要求

来源:互联网 发布:大富豪棋牌源码 教程 编辑:程序博客网 时间:2024/06/05 14:51

如果某一个方法在单元测试中被beforeclass和afterclass标注,那么,如果该单元测试是给予junit框架的,那么两个方法必须声明为静态的方法,否则编译失败。但是如果是给予testng单元测试框架时,没有该限制。具体的实验可以参考下面的代码。

单例模式的实现类

package pattern.design;public class Singleton {        //定义私有的构造函数    private Singleton(){            }        //定义一个私有的静态化的Singleton实例    private static Singleton singleton=null;        //定义一个公有化的getInstance方法    public static Singleton getInstance(){        if(null==singleton){            singleton=new Singleton();        }        return singleton;    }    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        //验证收否只生产了一个实例        Singleton single1=Singleton.getInstance();        Singleton single2=Singleton.getInstance();        System.out.println(single1==single2);    }}



给予junit的单例模式的测试代码

package pattern.design;import junit.framework.Assert;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;public class TestSingleton {@BeforeClasspublic static void beforeClass() {System.out.println("beforeClass is executed");}@SuppressWarnings("deprecation")@Testpublic void testSingleton() {System.out.println("testSingleton is executed");        Assert.assertEquals(Singleton.getInstance(), Singleton.getInstance());        Assert.assertEquals("Assert Object is equals", Singleton.getInstance(), Singleton.getInstance());}@AfterClasspublic static void afterClass() {System.out.println("afterClass is executed");}}


testng

package pattern.design;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.Assert;import org.testng.annotations.Test;public class TestSingletonWithTestNG {@BeforeClasspublic void beforeClass() {System.out.println("beforeClass is executed");}@Testpublic void testSingleton() {System.out.println("testSingleton is executed");        Assert.assertEquals(Singleton.getInstance(), Singleton.getInstance());        Assert.assertSame(Singleton.getInstance(), Singleton.getInstance(),"Assert Object is equals");}@AfterClasspublic void afterClass() {System.out.println("afterClass is executed");}}




0 0
原创粉丝点击