草庐IT

unit-testing

全部标签

java - 通过 Ant 运行 Junit 似乎没有使用自定义类运行器

我有一个自定义运行器,它通过套接字连接将Junit测试发送到在其他硬件上运行的Junit服务器。测试按预期运行,目标如下:但是,当我添加以下元素时...没有任何东西被传送到硬件,这让我相信我的@RunWith(com.company.name.RemoteTestCaseRunner.class)注释在的上下文中没有得到尊重。是否有什么我忘记做的事情,或者可能必须另外完成才能调用我的@RunWith注释?测试仍在运行并创建报告,某些不依赖于平台的测试会运行并通过,只是不需要与目标硬件上的服务通信的测试。更新我已经确定,在将@RunWith(Suite.class)与@SuiteClas

java - 确保在 mockito 中不调用非模拟方法

在下面的例子中:Executionexecution=mock(Execution.class);when(execution.getLastQty()).thenReturn(1000.0);when(execution.getLastPrice()).thenReturn(75.0);order.onFillReceived(execution);assertEquals(0,order.getLeavesQty(),0);Execution还有很多其他不应该调用的方法。只有被模拟的两个方法应该在这个测试中使用并且应该被调用。如果调用任何其他方法,则测试应该失败。如果调用任何其他方

java - 如何对仅使用 jUnit 启动线程的方法进行单元测试?

如标题所示,我想测试这样一个方法:publicvoidstartThread(){newThread(){publicvoidrun(){myLongProcess();}}.start();}编辑:从评论来看,我想测试线程是否启动并不是很常见。所以我必须调整问题...如果我的要求是100%的代码覆盖率,我是否需要测试该线程是否启动?如果是这样,我真的需要一个外部框架吗? 最佳答案 这可以通过Mockito优雅地完成.假设该类名为ThreadLauncher,您可以确保startThread()方法调用了myLongProcess(

java - 如何模拟接口(interface) Java PowerMockito

我正在尝试模拟一个接口(interface)。publicinterfaceFlowCopyParamsBusinessManager{ListfindByAppli(Stringapplication,StringsourcePattern)throwsFlowCopyParamsBusinessException;在我的代码中,当我调用此方法时findByAppli,我想返回一个FlowCopyParams列表。ListlstFlowCopyParams=flowCopyParamsBusinessManager.findByAppli("TOTO","TATA);这是我在类测试中

java - Spock 测试线程安全失败

主题我有一些代码绝对不是线程安全的:publicclassExampleLoader{privateListstrings;protectedListloadStrings(){returnArrays.asList("Hello","World","Sup");}publicListgetStrings(){if(strings==null){strings=loadStrings();}returnstrings;}}同时访问getStrings()的多个线程预计会将strings视为null,因此loadStrings()(这是一项昂贵的操作)被多次触发。问题我想让代码线程安全,

java - 如何在 JUnit 5 中使用字符串数组进行参数化

我想编写以字符串数组(String[])作为参数的JUnit5参数化测试:@ParameterizedTest@MethodSource("stringArrayProvider")voidparseFirstAndSecondInt(String[]args){Argumentsarguments=newArguments(args);assertEquals(1,arguments.getFirst());assertEquals(2,arguments.getSecond());}我不确定如何提供字符串数组的集合/流/迭代器。我没有成功尝试使用@MethodSource注释sta

java - 单元测试模拟返回数据有什么意义?

考虑我正在模拟某些服务及其方法的场景。Employeeemp=mock(Employee.class);when(emp.getName(1)).thenReturn("Jim");when(emp.getName(2)).thenReturn("Mark");//assertassertEquals("Jim",emp.getName(1));assertEquals("Mark",emp.getName(2));在上面的代码中,当emp.getName(1)被调用时,mock将返回Jim,而当emp.getName(2)被调用时,mock将返回Mark。我的问题是我正在声明Mock

java - 数据库单元测试框架?

在我的项目中,我使用了spring、jpa和PostgreSQLDB,我在数据库中有很多表,我需要对所有表进行单元测试。是否有任何框架可以在每次测试完成后回滚所有事务,以便每个测试都有新的/相同的数据库数据进行测试。这样在所有测试执行后,数据库模式的数据将保持原样。对此有什么建议吗?我对DBUnit有一些了解,但我需要为每个测试的每个输入数据编写.xml文件,并且需要在setup()中插入数据并在tearDown()中清除/删除数据,但不需要对我来说似乎是更好的策略。任何建议表示赞赏。谢谢。 最佳答案 正如@Ryan所指出的....

java - Junit mockito when(..).thenReturn() 抛出 NullPointerException

谁能给我解释一下下面的场景待测代码用户交易.java@OverridepublicServiceResponseget(Stringname){ServiceResponseresponse=newServiceResponse();List>exp=newArrayList>();Mapmap=newHashMap();map.put("expression","eq");map.put("property","name");map.put("value",name);exp.add(map);Listusers=userDao.getByCriteria(exp);if(!user

java - 断言集合 "Contains at least one non-null element"

我想验证一个集合是否包含至少一个非空元素。我试过is(not(empty())),但是这在下面的测试中通过了。importorg.junit.Test;importjava.util.ArrayList;importjava.util.Collection;importstaticorg.hamcrest.CoreMatchers.is;importstaticorg.hamcrest.MatcherAssert.assertThat;importstaticorg.hamcrest.Matchers.empty;importstaticorg.hamcrest.Matchers.no