Nei*_*eil 6 java junit unit-testing
有什么方法可以避免在每次测试开始时都没有固定参数100的情况下调用populateRandomData()方法。我需要在执行每个测试之前调用相同的方法来设置数据,但是我需要更改测试数据条目的数量例如每种情况下为100。
public class Tester
{
@Before
public void setUp() {
populateRandomData(100)
}
@Test
public void testMethod() {
}
private void populateRandomData(n){
//n times insert random data in table.
}
}
Run Code Online (Sandbox Code Playgroud)
您可以创建参数化 JUnit 测试,它允许您添加要在单元测试用例中传递的参数数量。查看示例教程创建参数化测试用例。
或者
@Rule,在测试方法上使用此注释来参数化规则的执行使其更加有用。取自JUnit 4.7 @Rules
编辑 :
使用@Rule的示例:
下面的类允许您初始化将在测试方法中使用的 num 变量的不同值:
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
public class Test1 implements TestRule {
private final int num;
public Test1(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public class Test1Statement extends Statement {
private final Statement statement;
public Test1Statement(Statement statement, int num) {
this.statement = statement;
}
@Override
public void evaluate() throws Throwable {
statement.evaluate();
}
}
@Override
public Statement apply(Statement statement, Description description) {
return new Test1Statement(statement, num);
}
}
Run Code Online (Sandbox Code Playgroud)
下面的类是实际的测试用例类。它包含JUnit 测试用例和测试方法中 num 变量的设置值。
import org.junit.Rule;
import org.junit.Test;
public class RuleNumberTester {
@Rule
public Test1 test = null;
@Rule
public Test1 test1 = null;
@Test
public void num1Test() {
test = new Test1(111);
System.out.println("Num 1 : " + test.getNum());
}
@Test
public void num2Test() {
test1 = new Test1(222);
System.out.println("Num 2 : " + test1.getNum());
}
}
Run Code Online (Sandbox Code Playgroud)
输出 :
测试用例已成功执行并显示在控制台上的测试方法中初始化的 num 变量的值。
Num 1 : 111
Num 2 : 222
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17257 次 |
最近记录: |