gpt4 book ai didi

java - JUnit - 针对不同实现的一项测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:35 24 4
gpt4 key购买 nike

我在为我的程序编写测试时遇到了一点问题。我有一个 SortingAlgorithm 接口(interface)和一些实现,例如 BubbleSort、InsertionSort、QuickSort...

我不想为每个 SortingAlgorithms 实现都创建一个 TestCase。我想将每个算法类注入(inject)一个 TestCase,然后分别为每个算法运行 TestCase。

怎么做?

我的代码:

public class SortingAlorithmTest {

SortingAlgorithm sortingAlgorithm;
final int amount = 50000;
final int delayTime = 0;
int[] numbers;

public SortingAlorithmTest(SortingAlgorithm sortingAlgorithm){
this.sortingAlgorithm = sortingAlgorithm;
}

@Before
public void setUp() throws Exception {
Random random = new Random();
numbers = new int[amount];

for (int i = 0; i < amount; i++){
numbers[i] = random.nextInt(Preferences.numberScope);
}

AlgorithmDelayer.setDelayTime(delayTime);
}

@Test(expected = NullPointerException.class)
public void passingNullValueTest(){
sortingAlgorithm.sort(null);
}

@Test(timeout = 1000)
public void sortingSpeedTimeTest() {
sortingAlgorithm.sort(numbers);
}

@Test
public void correctSortingTest(){
sortingAlgorithm.sort(numbers);

for (int i = 0; i < amount - 1; i++){
assertTrue(numbers[i] <= numbers[i+1]);
}
}

最佳答案

您可以使用 Parameterized测试:

@RunWith(Parameterized.class)
class MyTestClass {
private final SortingAlgorithm algo;

public MyTestClass(SortingAlgorithm algo) {
this.algo = algo;
}

@Parameters
public static List<Object[]> getParameters() {
List<Object[]> params = new ArrayList<>();
// Build your list of parameters somehow.
params.add(new Object[] { new BubbleSort() });
params.add(new Object[] { new QuickSort() });
// ...
return params;
}

@Test
public void test() {
// Exercise your algorithm somehow.
}
}

关于java - JUnit - 针对不同实现的一项测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com