编程语言与测试框架
2020-05-18 本文已影响0人
DuffyMagic
testng
流程控制注解:
@BeforeSuite
@BeforeTest
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite
忽略测试:
@Test(enabled=false)
分组测试:
@Test(groups = {"group01"})
依赖方法:
@Test(dependsOnMethods = {"planA"})
多线程测试:
@Test(threadPoolSize = 5,invocationCount = 5,timeOut = 60000)
@Test(threadPoolSize = 5,invocationCount = 5,timeOut = 60000)
public void plan(){
System.out.println("testng");
}
传参:
@DataProvider
public Object[] [] input(){
Object[][] objects;
return objects = new Object[][]{
{1,2},
{3,4}
};
}
@Test(dataProvider = "input")
public void plan(int a, int b){
System.out.println(a + b);
}
junit4
流程控制注解:
@BeforeClass (需要静态修饰符)
@Before
@Test
@After
@Before
@Test
@After
@AfterClass (需要静态修饰符)
忽略测试:
@Ignore
套件测试事例:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
LoginTest.class,
BuyTest.class
})
public class SuiteTest {
}
junit5
流程控制注解:
@BeforeAll (需要静态修饰符)
@BeforeEach
@Test
@AfterEach
@BeforeEach
@Test
@AfterEach
@AfterAll (需要静态修饰符)
忽略测试:
@Disabled
展示名称:
@DisplayName("fun 测试方法")
重复测试:
@RepeatedTest(5)
测试流程规定:
@Nested倒序执行
import org.junit.jupiter.api.*;
import java.util.HashMap;
public class Junit5Test {
private static HashMap<String,Object> data = new HashMap<String, Object>();
@Test
void loginTest(){
data.put("login","登录成功");
}
@Nested
class BuyTest{
@Test
void buyTest(){
if (data.get("login").equals("登录成功")){
System.out.println("可以购买东西了");
}
}
}
}
参数化:
public class Junit5Test {
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void loginTest(int param){
assertTrue(param>0&¶m<4);
}
@ParameterizedTest
@MethodSource("stringProvider")
void testWithExplicitLocalMethodSource(String argument) {
assertNotNull(argument);
}
static Stream<String> stringProvider() {
return Stream.of("apple", "banana");
}
}
动态参数:
@TestFactory
DynamicTest[] dynamicTestsFromArray() {
return new DynamicTest[] {
dynamicTest("7th dynamic test", () -> assertTrue(isPalindrome("madam"))),
dynamicTest("8th dynamic test", () -> assertEquals(4, 4))
};
}
数据驱动:依赖于@MethodSource
@ParameterizedTest()
@MethodSource
public void testDDTFromYaml(User user) {
assertTrue(user.name.length() > 3);
}
static List<User> testDDTFromYaml() throws IOException {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
TypeReference typeReference = new TypeReference<List<User>>() {
};
List<User> users = mapper.readValue(
TestYaml.class.getResourceAsStream("/user.yaml"),
typeReference
);
return users;
}