本文主要是介绍Creating parameterized tests with JUnit4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
环境
hamcrest-all-1.3
junit-4.13.2
被测类
package com.yaya.junit;public class Factorial {public long factorial(long number) {if(number == 0) {return 1;}return number*factorial(number-1);}
}
测试类一:使用构造函数
package com.yaya.junit;import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;import java.util.Arrays;
import java.util.Collection;import static org.junit.Assert.assertEquals;@RunWith(Parameterized.class)
public class ParameterizedFactorialTest {private int number;private int expectedResult;public ParameterizedFactorialTest(int input, int expected) {number= input;expectedResult= expected;}@Parameterspublic static Collection<Object[]> factorialData() {return Arrays.asList(new Object[][] {{ 0, 1 }, { 1, 1 }, { 2, 2 }, { 3, 6 }, { 4, 24 }, { 5, 120 },{ 6, 720 }});}@Testpublic void factorial() throws Exception {Factorial fact = new Factorial();assertEquals(fact.factorial(number),expectedResult);}
}
测试类二:使用公有变量
package com.yaya.junit;import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;import java.util.Arrays;
import java.util.Collection;import static org.junit.Assert.assertEquals;@RunWith(Parameterized.class)
public class ParameterizedFactorialTest {@Parameter(value=0)public int number;@Parameter(value=1)public int expectedResult;@Parameterspublic static Collection<Object[]> factorialData() {return Arrays.asList(new Object[][] {{ 0, 1 }, { 1, 1 }, { 2, 2 }, { 3, 6 }, { 4, 24 }, { 5, 120 },{ 6, 720 }});}@Testpublic void factorial() throws Exception {Factorial fact = new Factorial();assertEquals(fact.factorial(number),expectedResult);}
}
IntelliJ Idea 运行截图
这篇关于Creating parameterized tests with JUnit4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!