Tag: 测试

Java7 nio2的任何可用的内存中FileSystem实现?

我一直在寻找内存中的nio2 FileSystem实现,这将使我能够更轻松地测试我的IO相关代码。 在Win32FileSystem ,Java只提供(在我的JDK中) Win32FileSystem和ZipFileSystem 。 似乎ShrinkWrap有类似的东西,但似乎主要处理ZIP文件系统或任何。 我猜你们有些人已经在你自己的项目中加入了新的nio FileSystem IO,可以帮助我吗? 谢谢

如何衡量在java平台下上下文切换所花费的时间

让我们假设每个线程正在进行一些FP计算,我感兴趣 CPU在切换线程中使用了多长时间而不是运行它们 共享内存总线上创建了多少同步流量 – 当线程共享数据时,它们必须使用同步机制 我的问题:如何设计测试程序来获取这些数据?

模块化应用程序堆栈中的虚拟数据和unit testing策略

如何管理用于测试的虚拟数据? 将它们与各自的实体保持一致? 在一个单独的测试项目中? 使用外部资源的Serializer加载它们? 或者只是在需要的地方重新创建它们? 我们有一个应用程序堆栈,其中包含多个模块,每个模块都包含实体 每个模块都有自己的测试,需要运行虚拟数据。 现在,具有大量依赖性的模块将需要来自其他模块的大量虚拟数据。 然而,这些不会发布它们的虚拟对象,因为它们是测试资源的一部分,因此所有模块都必须一次又一次地设置它们需要的所有虚拟对象。 另外:我们实体中的大多数字段都不可为空,因此即使针对对象层运行事务也要求它们包含一些值,大多数时候还有其他限制,如唯一性,长度等。 是否有最佳实践方法或所有解决方案都妥协? 更多详情 我们的堆栈看起来像这样: 一个模块: src/main/java –> gets jared (…/entities/*.java contains the entities) src/main/resources –> gets jared src/test/java –> contains dummy object setup, will NOT get jared src/test/resources –> not jared 我们使用Maven来处理依赖关系。 模块示例: 模块A有一些虚拟对象 模块B需要自己的对象,与模块A相同 选项a) 测试模块T可以容纳所有虚拟对象,并将它们提供给所有模块中的所有测试中的测试范围(因此加载的依赖关系不会受到影响)。 那会有用吗? 含义:如果我在A中加载T并在A上运行install,它是否包含由T引入的引用,尤其不是B ? 然而A会知道B的数据模型。 选项b) 模块A在src/main/java../entities/dummy某处提供虚拟对象,允许B获取它们,而A不知道B的虚拟数据 选项c) 每个模块都包含外部资源,它们是序列化的虚拟对象。 它们可以由需要它们的测试环境反序列化,因为它依赖于它们所属的模块。 […]

OSGi测试

目前,我正在研究新版本控制系统,作为大学最后一年项目的一部分。 我们的想法是使其具有高适应性和可插拔性。 我们正在使用OSGi框架(Equinox实现)来管理我们的插件。 我的问题是我找不到一个简单易用的方法来测试OSGi包。 目前,我必须使用Maven构建捆绑包,然后执行测试工具。 我正在寻找像Eclipse的JUnit测试运行器这样的东西,因为它会节省我一大堆时间。 有没有快速简便的方法来测试OSGi包? 编辑:我不需要测试Eclipse插件或GUI组件,只需要测试OSGi包。 EDIT2:是否有一些支持JUnit4的框架?

如何优化testng和seleniums测试

对于我的实习,我必须使用TestNG和selenium来测试网络应用程序。 但我有一个问题,有时候selenium或浏览器因某些随机原因无法工作,因此工作测试被标记为“失败”。 为了避免这种情况,我可以使用注释@Test(invocationCount = 4, successPercentage = 25) ,然后如果测试成功一次,测试被标记为“Succeed”,那很好,但问题是这个解决方案会倍增时间对于4的测试,这不是很有效。 我可以做些什么来减少测试时间,是写一些规则“如果测试失败,重新运行此测试(并且只有在测试失败时),并且如果它在第二次,第三次或第四次工作,那么将此测试标记为“成功”“因此我可以避免这些随机错误。 但是我没有找到如何编写这个规则,我看到我们可以添加一个监听器,所以我们有一个名为“ onTestFailure ”的方法,所以当测试失败但我不知道如何重新启动时我可以做一些事情。运行测试。 我还找到了testng-failed.xml,其中保存了所有失败的测试,因此我们可以运行这个xml文件来重新运行这些测试,但是这将删除上一次运行的报告,但我只想要标记失败的测试如果第二次运行成功,则“成功”。 (我已将testNG / selenium集成到Jenkins中,所以我有一个包含所有测试的图表,所以这个方法不是很适应,但这种方法不会将测试时间乘以4,这就是我想要的) 所以如果你有任何关于如何做到的线索,那将是非常好的。

找不到符号assertEquals

我正在尝试为计算器编写我的第一个unit testing,但NetBeans说它无法找到符号assertEquals和注释@Test 。 我应该包括什么吗? 我正在使用NetBeans 7.3.1和W7。 package calculator; import org.junit.Assert.*; public class UnitTests{ @Test public void checkAdd(){ assertEquals(2, Calculator.rpnCalc(” 2 3 + “)); } } 编辑:谢谢你们,导入它作为静态帮助。 仅需要测试注释包括 import org.junit.Test;

Selenium + JUnit:测试订单/流量?

我正在使用Selenium来测试我的java web应用程序的html页面(实际上是JSP)。 我的网络应用程序需要一个流程来访问每个页面(它是一个小型的在线游戏网络应用程序),如:要进入页面B,您需要转到页面A,输入一些文本并按一个按钮进入页面B.显然我已经有一些测试来validation页面A是否正常工作。 我希望能够编写更多的测试,以便检查在页面A运行的测试之后我将得到我的测试页面B运行(等等应用程序的其余部分)。 简而言之:在我的测试中以某种方式定义一些顺序。 在过去几天做了很多关于测试的阅读之后,我找不到有关这个特定主题的任何有趣内容。 因此,我现在正在寻求建议。 可能的解决方案我已确定: 为页面A定义(在同一测试类中)测试方法,然后为测试B定义测试方法。然后命令执行测试方法。 但我们知道JUnit(但TestNG确实)不允许测试方法执行顺序,请参阅SO问题selenium-junit-tests-how-do-do-do-do-tests-in-a-test-in-sequential-order 在一种测试方法下对所有测试(对于第A页,第B页等)进行分组。 但是我读到它很糟糕,请参阅SO问题:junit-one-test-case-per-method-or-multiple-test-cases-per-methods 。 做selenium测试时是不是很糟糕? 我已经看到一些代码这样做,所以我认为它可能不是。 在一个测试方法下对所有测试(对于第A页,第B页等)进行分组,但使用JUnit的ErrorCollector类: ErrorCollector允许您以相同的方法执行有序检查,并在出现故障时产生特定的错误消息但是让方法(因此检查)一直运行到结束。 这个解决方案对我来说太“野蛮”了。 使用JUnit的TestSuite类:它运行测试套件中列出的测试类中定义的测试类。 因此,这将涉及在测试类中测试页面A的独立测试方法(比如说TestA),然后测试测试类中的页面B的所有测试方法(比如说TestB),依此类推。 然后将它们插入测试套件中,例如@SuiteClasses({TestA.class,TestB.class,TestC.class,…}) 将JUnit的TestSuite类与JUnit的ErrorCollector类结合使用。 哦,好吧,既然我们可以,您可能希望在不同的类中对每页进行分组测试,并在该组页面上使用ErrorCollector测试“区域”。 如果您有非常密集的网页或其他原因,此解决方案可能非常有用。 相当激进:使用其他工具(如TestNG)可以访问测试方法排序等function。 注意:我想有些人会推荐最后一个解决方案(迁移到TestNG),但我也希望听到与JUnit相关的其他想法/意见。 如果我在一个不能(由于某种原因)迁移到另一个测试框架的团队中工作,那么他们将如何解决这个测试订购问题?

如何使JUnit打印断言和结果

我有一些像这样的测试: @Test public void test01() { Position p = getPositionAt(‘a’, 1); assertNotNull(“a1 exists”, p); assertNotNull(“figure exists a1”, p.getFigure()); p = getPositionAt(‘a’, 2); assertNotNull(“exists a2”, p); assertNull(“figure exists a2”, p.getFigure()); p = getPositionAt(‘b’, 1); assertNotNull(“exists b1”, p); assertNull(“figure exists b1”, p.getFigure()); } 运行测试时我需要的是将每个断言消息打印到stdout然后打断断言的结果。 这是测试类需要的格式: a1 exists -success figure exists a1 -success exists a2 -success figure exists […]

如何擦除ElasticSearch索引?

我的单元/集成测试包括搜索function的测试。 我的想法是在每次测试之前都有空的搜索索引。 所以,我试图删除setup方法索引中的所有元素(它是Groovy代码): Client client = searchConnection.client SearchResponse response = client.prepareSearch(“item”) .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(termQuery(‘name’, ‘test’)) //tried also matchAllQuery() .setFrom(0).setSize(100).setExplain(false).execute().actionGet() List ids = response.hits.hits.collect { return it.id } client.close() client = searchConnection.client ids.each { DeleteResponse delete = client.prepareDelete(“item”, “item”, it) .setOperationThreaded(false) .execute().actionGet() } client.close() 似乎它正在异步处理所有删除,所以我在它之后添加了Thread.sleep(5000) 。 如你所见,我试图打开/关闭连接几次 – 它没有帮助。 有时需要更多时间的问题,有时它需要超过5秒才能删除,有时它无法找到刚刚添加的数据(来自之前的测试)等等。最烦人的是集成测试变得不稳定。 将Thread.sleep()放在可能看起来不太好的解决方案的任何地方。 有没有办法提交最后的更改,或者锁定直到所有数据都被写入?

JMeter延迟与加载时间(采样时间)

我在我的HTTP服务器上运行测试,当我将服务器从localhost(使用笔记本电脑)切换到AWS EC2 t.micro服务器时,传输速度非常慢。 我想知道使用JMeter进行测试时延迟和加载时间(或采样时间)之间的差异。 加载时间在“查看结果树”中,采样时间在“查看表中的结果”中。 这是我的问题。 发送大约3.5mb的zip文件时,在localhost中测试时大约需要0.5秒。 但是,当我在EC2服务器上测试它时,大约需要6~8秒。 我知道3.5mb相当大,但是不是8秒太慢了? 在我的测试中,JMeter显示当加载时间为6~8秒时,延迟约为0.5~1秒。 这两者有什么区别?