玩转算法面试-- Leetcode真题分门别类讲解

157 阅读3分钟

download:玩转算法面试-- Leetcode真题分门别类讲解

相信这是一门非常及时的课程,送给面试在即的你,学完这门课程,对于面试中遇到的大多数算法问题,你都会迎刃而解,但课程绝不止于面试,同样适合即将参加各类算法竞赛的同学,重要的是提升你的算法思维,这将是贯穿你编程生涯的核心内功!
适合人群及技术储备要求
适合具备基本编程思想,了解C++基本语法,最好你已经学习过另一门实战课程《算法与数据结构》,或者对基础数据结构已经有了解,在此基础上,想提升算法设计能力的同学,那这门课程非常适合你
添加依賴

  org.testng
  testng
  6.8.8
  test

運用DataProvider提供數據有兩種方式:
把測試代码和測試數據放在同一個類中;
把一切的數據提供都單獨寫在一個類里面,當測試數據比擬多時,這種辦法利於維護。
用法

  1. 常規用法
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    public class ParamTestWithDataProvider1 {
    @DataProvider(name = "test1")
    public static Object[][] primeNumbers() {
    return new Object[][] { { 2, true ,"hi"}, { 6, false ,"test"}, { 19, true ,"good"},
    { 22, false ,"aha"}, { 23, true ,"loo"} };
    }
    //參數必需要分歧
    @Test(dataProvider = "test1")
    public void testPrimeNumberChecker(Integer inputNumber,
    Boolean expectedResult, String test) {
    System.out.println(inputNumber + " " + expectedResult+" "+test);
    }
    }
  2. 帶Method參數的DataProvider
    假如希望DataProvider對不同的Test辦法運用不同的dataprovider,那麼在DataProvider中能夠運用Method參數

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class ParamTestWithDataProvider2 {
@Test(dataProvider = "provider")
public void getFirst(String name, int age) {
System.out.println("第一組"+name);
}
@Test(dataProvider = "provider")
public void getSecond(String name, int age) {
System.out.println("第二組 " + name);
}
@DataProvider(name = "provider")
public Object[][] provider(Method method) {
Object[][] objects;
if (method.getName().equals("getFirst")) { //假如調用該DataProvider的函數是getFirst,那麼就返回這個數組
objects = new Object[][] { { "cq1", 20 }, { "cq2", 22 } };
} else if (method.getName().equals("getSecond")) {//假如調用該DataProvider的函數是getSecond,那麼就返回這個數組
objects = new Object[][] { { "cq3", 20 }, { "cq4", 22 } };
} else { //假如調用該DataProvider的函數不是getFirst也不是getSecond,那麼就返回這個數組
objects = new Object[][] { {"cq5",33}, {"cq6",34} };
}
return objects;
}
}

  1. 經過DataProviderClass 把測試數據文件引過來
    import org.testng.annotations.DataProvider;
    public class DataProviderMethod {br/>//無指定數據稱號,默許運用辦法名
    @DataProvider
    public static Object[][] NoNameMethod(){
    return new Object[][]{
    {"DataWithNoName2"},
    {"DataWithNoName3"}
    };
    }
    //指定稱號1
    @DataProvider(name="dataprovider1")
    br/>{"DataWithNoName1"},
    {"DataWithNoName2"},
    {"DataWithNoName3"}
    };
    }
    //指定稱號1
    @DataProvider(name="dataprovider1")
    public static Object[][] dataProvider1(){
    return new Object[][]{
    {"dataprovider1-2"}
    };
    }
    //指定稱號2
    @DataProvider(name="dataprovider2")
    br/>{"dataprovider1-1"},
    {"dataprovider1-2"}
    };
    }
    //指定稱號2
    @DataProvider(name="dataprovider2")
    public static Object[][] dataProvider2(){
    return new Object[][]{
    {"dataprovider2-1"},
    {"dataprovider2-2"}
    };
    }
    }
    import org.testng.annotations.Test;
    public class ParamTestWithDataProvider3 {
    [br/>@Test(dataProvider="NoNameMethod",dataProviderClass=DataProviderMethod.class)
    public void doTestNG(String testdatas) {](mailto:br/%3E@Test(dataProvider=)[}
    @
    br/>System.out.println("未指定稱號,數據源名爲辦法名NoNameMethod:"+testdatas);
    }
    @
    Test(dataProvider="dataprovider1",dataProviderClass=DataProviderMethod.class)
    public void doTestNG1(String testdatas){](mailto:br/%3ESystem.out.println()[}
    @Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)
    br/>System.out.println("指定稱號,數據源稱號選择了dataprovider1:"+testdatas);
    }
    @Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)
    public void doTestNG2(String testdatas){
    System.out.println("指定稱號,數據源稱號選择了dataprovider2:"+testdatas);
    }
    }](mailto:br/%3ESystem.out.println()