java中是否有列表、集合和映射的Junit测试用例?
最近我在做一些关于创建一些数据结构的工作 所以我需要一些测试用例来确保它们正常运行 既然已经实现了这么多的数据结构,我想知道是否已经有一些免费的测试用例供通用 毕竟,创建测试很无聊 我现在使用的是:java中是否有列表、集合和映射的Junit测试用例?,java,list,data-structures,junit,testcase,Java,List,Data Structures,Junit,Testcase,最近我在做一些关于创建一些数据结构的工作 所以我需要一些测试用例来确保它们正常运行 既然已经实现了这么多的数据结构,我想知道是否已经有一些免费的测试用例供通用 毕竟,创建测试很无聊 我现在使用的是: package com.xenoamess.commons.primitive.collections.lists.array_lists; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.ut
package com.xenoamess.commons.primitive.collections.lists.array_lists;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Random;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author XenoAmess
*/
public class LongArrayListTest {
public void checkEqual(LongArrayList a1, ArrayList<Long> a2) {
assertEquals(a1.size(), a2.size());
for (int i = 0; i < a1.size(); i++) {
assertEquals(a1.get(i), a2.get(i));
assertEquals(a1.getPrimitive(i), (long) a2.get(i));
}
assertEquals(a1, a2);
assertEquals(a2, a1);
}
public void check(int length) {
LongArrayList a1 = new LongArrayList();
ArrayList<Long> a2 = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < length; i++) {
long l = random.nextLong();
a1.add(l);
a2.add(l);
}
checkEqual(a1, a2);
boolean flag = false;
for (Long l : a2) {
flag = !flag;
if (flag) {
a1.remove(l);
} else {
a1.removeByContentPrimitive(l);
}
}
assertTrue(a1.isEmpty());
a1.addAll(a2);
checkEqual(a1, a2);
a1.sort(null);
a2.sort(null);
checkEqual(a1, a2);
}
public void performanceChecks(int length) {
Random random = new Random();
LongArrayList data = new LongArrayList();
for (int i = 0; i < length; i++) {
long l = random.nextLong();
data.addPrimitive(l);
}
long begin1 = System.currentTimeMillis();
LongArrayList a1 = new LongArrayList();
for (int i = 0; i < length; i++) {
a1.addPrimitive(data.getPrimitive(i));
}
a1.sort(null);
Object a1c = a1.clone();
for (int i = 0; i < length; i++) {
a1.removeByContentPrimitive(data.getPrimitive(i));
}
long score1 = (System.currentTimeMillis() - begin1);
System.out.println("LongArrayList time : " + score1);
long begin2 = System.currentTimeMillis();
ArrayList<Long> a2 = new ArrayList<>();
for (int i = 0; i < length; i++) {
a2.add(data.getPrimitive(i));
}
a2.sort(null);
Object a2c = a2.clone();
for (int i = 0; i < length; i++) {
a2.remove((Object) data.getPrimitive(i));
}
long score2 = (System.currentTimeMillis() - begin2);
System.out.println("ArrayList<Long> time : " + score2);
assertTrue(score2 > score1);
assertEquals(a1c, a2c);
}
@Test
public void checks() {
for (int i = 0; i < 1000; i++) {
check(100);
}
System.out.println("micro end");
for (int i = 0; i < 20; i++) {
check(10000);
}
System.out.println("small end");
for (int i = 0; i < 5; i++) {
check(100000);
}
System.out.println("medium end");
// for (int i = 0; i < 1; i++) {
// check(1000000);
// }
System.out.println("large deleted");
System.out.println("performance checks started:");
performanceChecks(100000);
}
}
package com.xenoamess.commons.primitive.collections.lists.array\u list;
导入org.junit.jupiter.api.Test;
导入java.util.ArrayList;
导入java.util.Random;
导入静态org.junit.jupiter.api.Assertions.assertEquals;
导入静态org.junit.jupiter.api.Assertions.assertTrue;
/**
*@author-XenoAmess
*/
公共类LongArrayList测试{
公共无效检查相等(LongArrayList a1、ArrayList a2){
资产质量(a1.size(),a2.size());
对于(int i=0;i1);
资产质量(a1c、a2c);
}
@试验
公开作废支票(){
对于(int i=0;i<1000;i++){
支票(100);
}
System.out.println(“微端”);
对于(int i=0;i<20;i++){
支票(10000);
}
System.out.println(“小端”);
对于(int i=0;i<5;i++){
支票(100000);
}
系统输出打印项次(“中端”);
//对于(int i=0;i<1;i++){
//支票(1000000);
// }
System.out.println(“大删除”);
System.out.println(“性能检查已开始:”);
绩效检查(100000);
}
}
您可以参考测试用例,而不是您所寻找的答案,但是使用像AssertJ
(或Hamcrest
)这样的断言库将使您的测试更快、更容易,因为它们有许多断言集合内容的方法,如果您的源代码相当小并且是独立的,那么您甚至可以为您的集合类型扩展它。它会自动为您生成测试。您可以参考测试用例,而不是您正在寻找的答案,但使用断言库,如AssertJ
(或Hamcrest
),将使您的测试更快、更容易,因为它们有许多断言集合内容的方法,如果您的源代码相当小并且是独立的,那么您甚至可以为您的集合类型扩展它。它将自动为您生成测试。