gpt4 book ai didi

java - 如何为基于字符串条件从数组中过滤元素的方法编写测试

转载 作者:行者123 更新时间:2023-12-02 01:21:09 24 4
gpt4 key购买 nike

我有一个 Car 类,其类别字段为 String:

public class Car {

private String category;

public Car(String category) {
this.category = category;
}

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}
}

我有这个方法,它使用 contains() 方法根据 String 从数组中过滤出元素,以仅保留跑车。我知道这是个坏主意,只是想编写我的第一个单元测试。您能帮我了解从哪里开始吗?一般来说,测试环路过滤逻辑的最佳实践是什么。

private List<Car> filterOutEverythingExceptSportCars(List<Car> cars) {
List<Car> filteredCarsList = new ArrayList<>();

for (int i = 0; i < cars.size(); i++) {
if (cars.get(i).getCategory().contains("sport")) {
filteredCarsList.add(cars.get(i));
}
}
return filteredCarsList;
}

最佳答案

首先,您需要使您的方法可测试。在您的实现中,它是一个私有(private)实例方法。由于您没有使用实例中的任何其他内容,因此您可以将其设为包私有(private)静态方法:

static List<Car> filterOutEverythingExceptSportCars(List<Car> cars) {
List<Car> filteredCarsList = new ArrayList<>();
for (Car car: cars) {
if (!car.getCategory().contains("sport")) {
filteredCarsList.add(car);
}
}
return filteredCarsList;
}

现在您可以轻松编写带有要比较的输入和输出列表的单元测试:

@Test
public static void testFilterOutEverythingExceptSportCars() {
List<Car> cars = ...;
List<Car> actual = filterOutEverythingExceptSportCars(cars);
List<Car> expected = ...;
assertEquals(expected, actual);
}

您只需静态导入 filterOutEverythingExceptSportCars 方法,并将测试类与实现放在同一包中。

请注意,for循环的改进由您自行申请,而不是强制的。我也没有更改命名或 if 条件来匹配。只需编写您的测试并迭代您的实现,直到您最喜欢它为止......

关于java - 如何为基于字符串条件从数组中过滤元素的方法编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662152/

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