junit4 组合测试

  有时,我们可能需要将几个测试类组合在一起执行,或将几个测试类的某几个测试方法组合在一起执行。当然在实际的应用中还是用的比较少,我们可以很方便的使用maven来跑测试用例;这里纯属技术探讨。

测试类ATest.java

import org.junit.Test;
import org.junit.experimental.categories.Category;

public class ATest {
	
	@Test
	@Category(FastTest.class) // @Category 放在测试方法上
	public void atest1() {
		System.out.println("atest1");
	}
	
	@Test
	@Category(SlowTest.class)
	public void atest2() {
		System.out.println("atest2");
	}
}

测试类BTest.java

// @Category 放在测试类上
@Category(FastTest.class)
public class BTest {

	@Test
	public void btest1() {
		System.out.println("btest1");
	}

	@Test
	public void btest2() {
		System.out.println("btest2");
	}

	@Test
	@Category(SlowTest.class)
	public void btest3() {
		System.out.println("btest3");
	}
}


两个用于Categories标记分组作用的接口,当然也可以是类,这些接口仅仅用于标记分组:FastTest.java、SlowTest.java

public interface FastTest {

}
public interface SlowTest {

}

以上是准备工作:

1、Suite组合测试类。

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
// 这里将按顺序执行,A测试类先执行,B测试类后执行。当然测试类中方法的执行是无序的。
@SuiteClasses({ ATest.class, BTest.class })
public class SuiteTests {

}

执行SuiteTests将运行A、B的5个测试方法。输出如下:

atest1
atest2
btest1
btest2
btest3

2、Categories组合测试类或测试方法。

import org.junit.experimental.categories.Categories;
import org.junit.experimental.categories.Categories.IncludeCategory;
import org.junit.runner.RunWith;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Categories.class)
@IncludeCategory(FastTest.class)
@SuiteClasses({ ATest.class, BTest.class })
public class Categories1Tests {

}

以上的代码将会执行@Category(FastTest.class)标记的类或测试方法,所以会执行ATest的测试方法atest1(),以及BTest的所有测试方法。输出如下:

atest1
btest1
btest2
btest3

还可以使用@ExcludeCategory排除某些标记方法,代码如下

import org.junit.experimental.categories.Categories;
import org.junit.experimental.categories.Categories.ExcludeCategory;
import org.junit.experimental.categories.Categories.IncludeCategory;
import org.junit.runner.RunWith;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Categories.class)
@IncludeCategory(FastTest.class)
@ExcludeCategory(SlowTest.class)
@SuiteClasses({ ATest.class, BTest.class })
public class Categories2Tests {

}

这样BTest中的btest3()测试方法将会排除掉,执行结果如下:

atest1
btest1
btest2


转载于:https://my.oschina.net/u/2007041/blog/508480

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值