草庐IT

unit-testing

全部标签

java - 简单的 Jdbc 模板。 - 插入和检索 ID

我正在使用simpleJdbcTemplate将数据放入数据库。simpleJdbcTemplate.update("insertintoTABLEvalues(default)");我不想放置任何数据,因为我的单元测试不需要它。如何从插入的行中获取ID?我可以检索当前序列值,但如果其他人执行插入操作,那么我将获得下一个序列值。有没有办法使用simpleJdbcTemplate插入一行并获取id?更新方法重新调整插入行的数量,我想拥有id。感谢您的帮助。 最佳答案 你找到答案了吗?如果没有,请尝试改用SimpleJdbcInsert

java - 私有(private)类单元测试

如何对在java中分类的私有(private)(意味着具有包可见性)进行单元测试?我有一个包,这个包里只有一个类是public的,其他类都是private的。如何用单元测试覆盖其他类?我想在restingjar中包含单元测试。 最佳答案 在同一个包中创建单元测试类。例如,如果com.example.MyPrivateClass位于src/main/java/com/example/MyPrivateClass.java然后测试类将在同一个包com.example.MyPrivateClassTestCase中,并将位于src/tes

java - 我应该出于什么原因 mock ?

我也是Mockito和PowerMockito的新手。我发现我无法使用纯Mockito测试静态方法,所以我需要使用PowerMockito(对吗?)。我有一个名为Validate的非常简单的类,使用这个非常简单的方法publicclassValidate{publicfinalstaticvoidstateNotNull(finalObjectobject,finalStringmessage){if(message==null){thrownewIllegalArgumentException("Exceptionmessageisanullobject!");}if(object=

java - 如何仅对已更改的源文件运行单元测试?

有没有办法让ant只为它构建的java类运行单元测试?例如,如果MyClass.java已过时,ant将构建MyClass.class。之后,我希望它也运行MyClassTest和MyClassTestSuite(如果存在)。它不必基于命名约定。我可以使用注释或任何其他有效的方法。编辑:一些人表示这是个坏主意。如果我计划在不运行所有单元测试的情况下checkin,它会是。我的主要项目有超过16k的单元测试,运行大约需要20分钟。我会在checkin之前运行它们,但每次更改文件时都运行整个套件是完全不切实际的。抱歉,我应该提供更多背景信息。 最佳答案

java - Junit中如何处理测试数据?

在TDD(TestDrivenDevelopment)开发过程中,如何处理测试数据?假设一个场景,解析一个日志文件得到需要的列。对于强测试,测试数据如何准备?我将此类文件定位到测试类文件是否合适? 最佳答案 例如,Maven使用文件夹结构约定来处理测试数据:srcmainjava如果你使用maven进行构建,你需要将测试资源放在正确的文件夹中,如果你的构建有不同的东西,你可能想要使用这个结构,因为它不仅仅是一个maven约定,对我来说认为它接近“最佳实践”。 关于java-Junit中如

java - 如何单元测试文件访问(Java)?

我知道一个好的单元测试不应该访问文件系统。所以我也知道,您可以使用Mockito和PowerMock来模拟File类。但是下面的代码呢:publicClassLoaderProductDataProvider(ClassLoaderclassLoader,StringtocResourcePath,booleancheckTocModifications){//...this.cl=classLoader;tocUrl=cl.getResource(tocResourcePath);if(tocUrl==null){thrownewIllegalArgumentException("C

java - 您如何为 Java servlet 编写单元测试?

单元测试javaservlet的最佳实践是什么?顺便说一句:这是一个我有一些困难的话题:你如何对你的javaservlet进行单元测试? 最佳答案 要做的最重要的事情是尝试从servlet中提取所有与servlet行为没有直接关系的东西。这立即使测试核心功能变得很多更容易。通过这样做,您立即拥有一组不绑定(bind)到容器并且可以测试的组件,而无需运行和连接到容器的痛苦(除了使它们更可重用)。应该考虑架构和组件的适当分层-例如组件返回对象结构而不是可显示的片段,不直接使用HttpRequests但一些请求编码结构等。您的大部分测试(

java - 使用 SpringJunit4ClassRunner 在属性占位符之前设置系统属性或环境变量

我有一个主要的app-context.xml,它定义了一个具有两个位置的属性占位符:默认属性文件和一个可选的覆盖文件:可选的覆盖位置允许指定另一个属性文件(例如“-DconfigOverride=file:/home/app/config.properties”),其中仅包含应覆盖的属性。对于我的单元测试,我使用了导入app-context.xml的测试上下文:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:test-context.xml"})publicclassU

java - 有没有办法用 Hamcrest 对嵌套属性进行深入比较

我的大部分测试都使用hamcrest,但遇到了一个问题,它无法测试对象图中下一层的属性。下面是我的测试用例的片段finalListfoos=fooRepository.findAll(spec);assertThat(results,is(notNullValue()));assertThat(results,hasItem(hasProperty("id.fooID1",equalTo("FOOID1"))));所以在这里我想检查foos列表中是否有属性id.fooID1equla到FOOID1。在这里我要向下一级检查我的嵌套属性。这目前在hamcrest中不起作用,我得到以下信息错

java - 如何证明java中的HashMap不是线程安全的

我正在开发一个应用程序,它使用HashMap来共享状态。我需要通过单元测试来证明它在多线程环境下会有问题。我尝试通过检查两者中HashMap的大小和元素来检查单线程环境和多线程环境中应用程序的状态。但这似乎无济于事,状态始终相同。是否有任何其他方法可以证明或证明对map执行操作的应用程序可以很好地处理并发请求? 最佳答案 这很容易证明。不久HashMap基于数组,其中每个项目代表一个桶。随着更多键的添加,桶会增长,并且在某个阈值时,数组会被重新创建,并具有更大的大小,以便其桶分布得更均匀(性能考虑)。在数组重新创建期间,数组变为空,