我有一组测试测试一些与timzeone相关的功能
我有一个Before方法,它将默认时区设置为我选择的一个,以及一个after方法,它恢复测试前的默认值.
所以我基本上想做
将时区设置为UTC
运行测试
恢复时区
将时区设置为EST
运行测试
恢复时区
将时区设置为JST
运行测试
恢复时区
每种情况下的测试都是相同的.
是否有捷径可寻?
是的,有一种很好的方法可以反复进行相同的测试,只需要一些其他的数据集.解决方案是"@RunWith(Parameterized.class)" - 链接到javadoc.我假设您正在使用JUnit 4 - 但TestNG也有我记忆中的功能.
您需要编写的代码看起来有点像这样:
@RunWith(Parameterized.class)
public class FibonacciTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
Fibonacci,
{ { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },
{ 6, 8 } } });
}
private int fInput;
private int fExpected;
public FibonacciTest(int input, int expected) {
fInput= input;
fExpected= expected;
}
@Test
public void test(@HeresHowYouGetValue Type value) {
assertAnswerKey(new Object[][] {
Fibonacci,
{ { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },
{ 6, 8 } } });
assertEquals(fExpected, Fibonacci.compute(fInput));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |