windows10php网站建设在线视频直播网站建设
web/
2025/10/2 11:17:14/
文章来源:
windows10php网站建设,在线视频直播网站建设,江苏专业网站制作公司,wordpress完整替换网址guava集合操作类的使用我目前正在为LibFX添加一项新功能#xff0c;为此我创建了一些类似于Java Collections Framework的自定义集合。 我一直在寻找可以与之对抗的测试#xff0c;并很高兴发现Google的Guava包含了我所需要的#xff1a;一个庞大的测试套件#xff0c;可以… guava集合操作类的使用 我目前正在为LibFX添加一项新功能为此我创建了一些类似于Java Collections Framework的自定义集合。 我一直在寻找可以与之对抗的测试并很高兴发现Google的Guava包含了我所需要的一个庞大的测试套件可以验证JDK和Guava的所有集合接口实现的每个细节。 让我们快速浏览一下。 总览 这篇文章将首先展示如何设置项目然后再着手进行实际测试。 我没有创建专门的示例但是您可以看到我如何在LibFX中使用它 。 建立 为此我们需要JUnitGuava-Testlib和一些样板代码。 获取JUnit 如果您尚未在项目中使用JUnit请在此处获取。 如果您使用Maven或Gradle Maven的依赖项信息 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope
/dependency Gradle的依赖项信息 testCompile junit:junit:4.12获取番石榴 我们实际上需要的不是Guava本身而是Guava-Testlib 。 您可以从中央存储库下载它 该存储库还包含不同管理者的依赖项信息。 为了您的方便 Maven的依赖项信息 dependencygroupIdcom.google.guava/groupIdartifactIdguava-testlib/artifactIdversion18.0/versionscopetest/scope
/dependency Gradle的依赖项信息 testCompile com.google.guava:guava-testlib:18.0写一些样板 假设您要编写一个MySet和相应的MySetTest 。 通过JUnit-3.8.x方式创建一个方法public static Test suite();. JUnit查找此方法并使用它来识别将为该类运行的所有测试。 在该方法内创建一个TestSuite并添加我们将进一步编写的测试 MySetTest中的样板 public class MySetTest {public static Test suite() {return new MySetTest().allTests();}public Test allTests() {TestSuite suite new TestSuite(package.name.of.MySetTest);suite.addTest(testForOneToWayUseMySet());suite.addTest(testForAnotherWayToUseMySet());return suite;}} 我没有尝试使用JUnit 4的注释来执行此操作。如果您这样做了请ping通然后将其包含在此处。 放置好样板后您可以使用JUnit运行此类例如从IDE内部或CI服务器上运行此类。 测试您的实施 现在已经完成了我们可以开始为实现实际创建测试了。 或者更准确地说告诉番石榴如何为我们做到这一点。 这是一个分为两部分的过程一个为集合中的元素和被测单元创建一个生成器另一个使用Guava的测试套件构建器中的一个来创建针对实现而定制的全面测试集。 我们将继续测试Set的实现。 在下面我们将查看哪些其他接口测试套件可用。 元素生成器和被测单元 测试套件构建器要求您允许在集合中创建样本元素并实例化集合。 为此您必须实现TestSetGeneratorE 其中E是元素的类型。 这很简单 order(ListE)是可能需要考虑的唯一方法。 请注意与文档相反即使未报告CollectionFeature.KNOWN_ORDER testlib18.0的当前版本也确实调用了此方法有关功能的详细信息请参见下文。 在我的情况下 只需返回插入顺序即可。 测试套件生成器 现在这才是真正的魔术发生。 您从上方获取生成器将其传递给正确的测试套件生成器指定您的集合具有哪些功能它将创建定制的全面测试套件 使用“ SetTestSuiteBuilder”创建测试 public Test testForOneToWayUseMySet() {return SetTestSuiteBuilder.using(new MySetGenerator()).named(one way to use MySet).withFeatures(CollectionSize.ANY,CollectionFeature.ALLOWS_NULL_VALUES,CollectionFeature.FAILS_FAST_ON_CONCURRENT_MODIFICATION,CollectionFeature.SUPPORTS_ADD,CollectionFeature.SUPPORTS_ITERATOR_REMOVE,CollectionFeature.SUPPORTS_REMOVE,).createTestSuite();
} 特征 指定正确的功能很重要。 查看两个枚举CollectionSize和CollectionFeatures以查看存在哪些可能性来描述集合的行为。 请注意创建的测试会同时验证功能 例如如果ALLOWS_NULL_VALUES 构建器将生成测试以验证向集合添加null会抛出NullPointerException 。 抑制测试 通过在构建器上调用suppressing 您可以指定将不会运行的测试方法。 当这些功能不足以精确指定行为时它似乎是最后的选择。 我没有使用它。 设置与拆卸 如果必须在每次测试之前或之后运行代码则可以将其作为Runnable分别withTearDown给withSetUp或withTearDown 都可以在构建器上调用。 可用的测试套件 当然您也可以为其他接口生成测试套件。 乍一看就产生了以下可能性 Java的集合 采集 迭代器 清单 地图 导航地图 导航集 队列 组 SortedMap SortedSet 番石榴的收藏 双图 ListMultimap 多图 多集 SetMultimap SortedMultiset SortedSetMultimap 对* TestSuiteBuilder进行类型搜索请注意通配符会产生一些其他生成器。 我没有对其进行调查但是有可能将其用于其他情况下的测试。 为了使用它们只需实现相应的Test...Generator并将其交给相应的...TestSuiteBuilder 。 反射 我们已经看到了如何使用Guava的Testlib测试集合的实现如何将其和JUnit包含在我们的项目中运行它所需的样板以及对生成器和测试套件生成器的概述。 后者是发生所有魔术的地方它可以创建全面的测试以适合我们对实现及其功能的描述。 翻译自: https://www.javacodegeeks.com/2015/03/test-collection-implementations-with-guava.htmlguava集合操作类的使用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85589.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!