Я должен:
- Написать функцию, которая принимает массив / список строк, подсчитывает вхождение каждой строки, а затем возвращает структуру данных с каждой уникальной строкой и количество раз это произошло. Например, учитывая входные данные, которые содержат:
[«apple», «bat», «apple», «car»]
функция должна возвращать структуру данных, которая имеет счет 2 для «яблока», 1 для «летучей мыши» и 1 для «автомобиля».
Напишите покрытие модульного теста для моего решения. Покройте перестановки, которые гарантируют, что положительная / отрицательная функциональность правильна. Кроме того, охватите значимые крайние случаи, чтобы обеспечить как правильную функциональность, так и избежать ошибок при выполнении кода.
Теперь я выполнил первую задачу, вот код:
package Testing;
import java.util.*;
class CountString{
public static void main(String []args){
List strings = Arrays.asList("appLe","b at","APPle","car!");
Map<String,Integer> datastructure = countStrings(strings);
for (Map.Entry<String, Integer> entry : datastructure.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
public static Map<String,Integer>countStrings(List<String> words){
Map<String,Integer> map = new HashMap<>();
List<String>newList = new ArrayList<>();
String regex = "abcdefghijklmnopqrstuvwxyz";
regex+=regex.toUpperCase();
String w;
for(String s:words){
w="";
for(int i=0;i<s.length();i++){
if(regex.contains(s.charAt(i)+"")){
w+=s.charAt(i)+"";
}
}
newList.add(w.toLowerCase());
}
String countedWords = "";
int count;
for(int i=0;i<newList.size();i++){
count=1;
if(!countedWords.contains(newList.get(i))){
for(int j=i+1;j<newList.size();j++){
if(newList.get(i).equals(newList.get(j))){
count++;
}
}
countedWords+=newList.get(i)+"";
map.put(newList.get(i),count);
}
}
return map;
}
}
Теперь мне нужно разработать модульное тестирование этого, но я немного запутался в сравнении hashmap, пожалуйста, помогите мне в этом,
Вот небольшая попытка, которую я сделал:
package Testing;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
class JUnitTest {
@Test
void test() {
CountString test = new CountString();
List strings = Arrays.asList("appLe","b at","APPle","car!");
Map<String,Integer> output = test.countStrings(strings);
for(Map.Entry<String, Integer> entry : output.entrySet()) {
assertEquals(expecteds, output);
}
}
}
Не могу узнать, как работает функция assertEqual в Map.