编程语言与测试框架

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&&param<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;
    }
上一篇 下一篇

猜你喜欢

热点阅读