草庐IT

test_collection

全部标签

java - 为什么 JUnit 5 测试不从抽象类继承 @Test 注解?

我刚刚意识到(在将遗留代码从JUnit4迁移到JUnit5时)我们的一些测试方法没有执行,因为它们没有@Test注释。他们没有它,因为它们覆盖了抽象父类(superclass)(存在注释的地方)的方法。我可以通过向每个方法添加@Test轻松解决此问题。但我想知道这是否是预期的行为。它从JUnit4更改为5,但我在officialJUnit5UserGuide中找不到任何相关信息或其他任何地方。根据thisquestion,注解通常不被继承。但似乎这是在新的JUnit版本中有意更改的。(或者我错过了什么?)抽象测试类importorg.junit.jupiter.api.Test;abs

java - 为什么Collection接口(interface)有equals()和hashCode()?

为什么Collection接口(interface)有equals(Objecto)和hashCode(),假设任何实现都默认有那些(继承自Object)? 最佳答案 来自CollectionJavaDoc:WhiletheCollectioninterfaceaddsnostipulationstothegeneralcontractfortheObject.equals,programmerswhoimplementtheCollectioninterface"directly"(inotherwords,createaclas

java - 测试调用 : how to do set up common to all test suites

有没有办法知道JUnit4测试类是否由测试套件启动?我有全局的东西,我想在所有测试之前运行(关于内存数据库),所以我想在测试服中做它。但是,我仍然希望能够在没有测试服的情况下一次启动一个测试,所以我需要知道我是否需要在测试的@Before部分初始化全局事物......有人知道吗如果它是可能的? 最佳答案 有几种方法可以实现这一点。最简单和最简单的方法是在套件的开始和结束时运行一个“测试”,它会设置您的数据库,然后设置一个全局标志。在您的@Before和@After测试中,您检查此标志,并在必要时进行设置/拆卸。@RunWith(Su

java - 何时返回 Iterable<String> 而不是 List、Set、Collection?

所以我一直在相当广泛地使用Neo4jAPI,我注意到它们几乎总是有返回Iterable而我一直认为最好返回Set、List或Collection之一,除非有令人信服的理由不这样做。设置为向用户表明它永远不会有重复的元素,当顺序很重要或包含重复元素时为List,或者当您没有策略时为Collection。与Iterable相比,我更喜欢它们,因为它们具有有用的实用程序,如.contains()、.add()等。我发现我经常需要编写代码将Iterable转换为Collection。所以我的问题是:我是否遗漏了一些重要的东西?使用Iterable而不是Collection是否有合理的理由?你什

java - 是否可以保证 java.util.Collections.shuffle() 背后的算法在未来的 Java 版本中保持不变?

在未来的java版本中,以下程序是否保证生成具有相同内容和顺序的列表?importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Random;publicclassTest{publicstaticvoidmain(String[]args){Listlist=newArrayList(Arrays.asList("A","B","C","D"));Collections.shuffle(list,newRandom(

java - 我应该重写 Collections 的 hashCode() 吗?

假设我有一些包含各种字段的类:classMyClass{privateStrings;privateMySecondClassc;privateCollectioncoll;//...@OverridepublicinthashCode(){//????}}其中,我确实有各种我想存储在HashMap中的对象。为此,我需要拥有MyClass的hashCode()。我必须递归进入所有字段和各自的父类,以确保它们都正确实现了hashCode(),否则MyClass的hashCode()可能不会考虑某些值。这样对吗?我如何处理该集合?我可以一直依赖它的hashCode()方法吗?它会考虑我的s

Java,为什么 collections.sort() 仍然适用于非比较器类型的参数?

我知道在javaCollections类中,有一个静态方法sort:sort(Listlist,Comparatorc**)sort中的第二个参数应该是一个实现Comparator接口(interface)的对象及其比较方法。但是当我学习lambda的方法引用时,我看到了这个例子:publicclassTest{publicstaticvoidmain(String[]args){newTest().sortWord();}publicvoidsortWord(){Listlst=newArrayList();lst.add("hello");lst.add("world");lst.

java - Collections.synchronizedList() 使用什么模式

我正在阅读方法Collections.synchronizedList()的实现并且很困惑它是装饰器模式还是代理模式的例子? 最佳答案 绝对是装饰器。它用相同接口(interface)的不同实现包装提供的列表,该接口(interface)的方法改变相同底层集合的行为(通过同步访问),同时将方法直接委托(delegate)给包装的实例。如果它是代理模式,则您不一定需要在构造期间传递要包装的集合,并且这些方法在幕后不一定会在每次调用时都引用完全相同的集合实例。另见:ExamplesofGoFDesignPatternsinJava'sc

java - HQL 中的 Collection.contains(Enum.Value)?

我对如何在HQL中做某事有点困惑。假设我有一个Foo类,我坚持hibernate。它包含一组枚举值,如下所示:publicclassFoo{@CollectionOfElementsprivateSetbarSet=newHashSet();//gettersandsettershere...}和publicenumBar{A,B}是否有一个HQL语句我可以用来只获取barSet包含Bar.B的Foo实例?Listfoos=session.createQuery("fromFooasfoo"+"wherefoo.barSet.contains.Bar.B").list();或者我是否一

java - 如何检查方法是否在 Java 中返回 Collection<Foo>?

我想根据方法的签名检查接口(interface)中是否存在方法。该方法应具有的签名是:CollectionmethodName(Spamarg0,Eggsarg1,...)我可以通过Class.getMethods()找到方法然后用method.getName()分别找到名称、参数和返回类型,method.getParameterTypes()和method.getReturnType().但是我要将返回类型与什么进行比较以确保只有返回Collection的方法被选中,而不是其他集合?method.getReturnType().equals(Collection.class)因为以上