Tag: junit

在ant junit任务中更改工作目录

我有一个运行JUnits测试的ant文件。 这些测试依赖于某些配置文件的相对路径。 我已经尝试为批处理测试设置工作目录,但是失败了。 我希望工作目录为${plugins.dir}/${name} Ant脚本的JUnit部分: 我用谷歌搜索和搜索,但我找到的解决方法是设置“dir”,“sysproperty”或“jvmarg”。 如你所见,我已经尝试过所有:) 有没有办法在标签中打印当前目录? 它不支持。 这将允许我validation目录是否实际改变了什么。 这个等式中的一个通配符是,这是在Hudson中运行的,它启动了一个启动atrunner的eclipse过程。 这样我们就可以运行junit和eclipse插件junit测试了。 我认为不应该与这个问题有任何关系。

JUnit测试用例中的Thread.sleep

我正在编写测试用例来测试对象行为。 当对象被实例化时,它必须允许调用方法,只有在500毫秒内调用它时才调用call(),否则它必须抛出exception。 我设计了这样的Junit测试用例: @Test(expected = IllegalStateException.class) public void testCallAfterTimeout() { MyObject o= new MyObject(); //To ensure the timeout is occurred Thread.sleep(1000); o.call(); } 你认为这是一种好习惯还是我应该采用另一种方法? 非常感谢

适当的unit testing技术

在使用TDD时,我发现自己需要测试一个包含查找值的常量(最终)散列图( 请查看为什么这是更新的情况 ) 见下文 private static final Map singleDigitLookup = new HashMap(){{ put(0,”Zero”);put(1,”One”);put(2,”Two”);put(3,”Three”);put(4,”Four”);put(5,”Five”);put(6,”Six”);put(7,”Seven”); put(8,”Eight”);put(9,”Nine”); }}; 对于TDD,它强调要一次测试一件事,所以我开始调用我的类来validation每个元素的有效性,如下所示。 测试风格1 @Test public void whenWordIsOneThenReturn1(){ assertEquals(1, WordToIntegerConverter.toInteger(“One”)); } 在编写第三个测试后,我认为它非常荒谬,并使用反向键值对创建了一个临时查找,并开始调用循环进行测试,如下所示。 测试风格2 @Test public void whenWordIsZeroThroughNineReturnIntegerConversion(){ HashMap lookup = new HashMap(){{ put(0,”Zero”);put(1,”One”);put(2,”Two”);put(3,”Three”);put(4,”Four”);put(5,”Five”); put(6,”Six”);put(7,”Seven”);put(8,”Eight”);put(9,”Nine”); }}; for(int i = 0; i < 10; i++) { assertEquals(i, WordToIntegerConverter.toInteger(lookup.get(i))); } } 我的问题是这样的; 使用样式1进行unit testing是否更好,或者使用样式2更好。 我看到两者的利弊。 […]

如何编写unit testing以validation函数是否对其结果进行排序?

我有一个数据源,我可以从中请求一个(任何)国家/地区的人员列表,以及一个从该数据源检索人员并按字母顺序按名称对其进行排序的方法。 我应该如何编写unit testing以确保我的方法的排序部分正常工作? 这就是我的SUT的样子: class PeopleStuff { public IData data; public List getSortedPeopleForCountry(String countryName) { List people = data.getPeopleForCountry(countryName); Comparator nameComparator = new PersonNameComparator(); Collections.sort(people, nameComparator); return people; } } 这就是我的unit testing的样子: @Test public void testGetPeopleSortsByPeopleName() { String COUNTRY = “Whatistan”; // set up test (the 3 lines below are actually in a @Before setup […]

JUnit 5 @Nested注释的目的是什么?

在JUnit 5中,有一个新的注释: @Nested 。 我理解它是如何工作的,我理解为什么我们使用嵌套类,我只是不明白为什么我们需要在测试中使用嵌套测试类。

如何模拟MyBatis映射器接口?

我正在为我的Jersey rest API编写unit testing,该API在后台使用MyBatis。 这是我的课程结构: rest服务: @Path(“/api”) public class HelloRestService { @Inject HelloBean helloBean; @GET @Path(“/echo/{name}”) public Response echo(@PathParam(“name”) String name) { return Response.status(200).entity(helloBean.sayHello(name)).build(); } } 无状态EJB: @Stateless public class HelloStatelessBean implements HelloBean { // Injected MyBatis mapper (dao) @Inject private EmployeeMapper employeeMapper; @Override public Employee getEmployeeById(final Long id) { return employeeMapper.getEmployeeById(id); } @Override public […]

CompletableFuture可用性和unit testing

我正在学习java 8 CompletableFuture并最终得到了这个。 所有的拳头,您如何看待这行代码? 我需要并行向不同的服务发送请求,然后等待所有服务响应并继续工作。 //service A CompletableFuture serviceAFuture = CompletableFuture.supplyAsync( () -> this.ServiceA.retrieve(serviceARequest), serviceAExecutorService ); //service B CompletableFuture serviceBFuture = CompletableFuture.supplyAsync( () -> this.ServiceB.retrieve(serviceBRequest), serviceBExecutorService ); CompletableFuture.allOf(serviceAFuture, serviceBFuture).join(); ServiceAResponse responseA = serviceAFuture.join(); ServiceBResponse responseB = serviceBFuture.join(); 甚至代码都在做我想要的,我在测试代码所在的类时遇到了问题。 我尝试使用Mockito并执行以下操作: doAnswer(invocation -> CompletableFuture.completedFuture(this.serviceAResponse)) .when(this.serviceAExecutorService) .execute(any()); 执行程序服务和服务响应在嘲笑,但测试永远不会结束,并且线程一直在等待这一行 CompletableFuture.allOf(serviceAFuture, serviceBFuture).join(); 我在这里缺少的任何暗示? 谢谢!

在junit测试期间无法加载ResourceBundle

我正在尝试编写一些Junit测试来测试我们的应用程序中的旧类。 代码正在尝试加载ResourceBundle(用于翻译)但失败了。 我想问题是类路径相关但我无法弄明白。 代码在/ src中布局,我的测试在/ test中。 给定一个相对于/ src的基本名称的ResourceBundles,比如“foo / bar / baz”。 我的测试使用与app本身相同的类路径,所以我不明白它为什么找不到捆绑包。 什么错误的想法?

是否有一个使用Hamcrest’describeMismatch’function的JUnit断言版本?

在我尝试过的每个JUnit版本中(最多4.8.1),一个失败的assertThat会显示一条错误消息,如下所示: 预期的:[describeTo] 得到:[对象的字符串表示] 换句话说,它将显示对象的toString()而不是Matcher的不匹配描述。 如果我使用org.hamcrest.MatcherAssert.assertThat中的assertThat,那么它将调用’describeMismatch’并显示更有用的错误消息。 我是否错误地使用了Junit,或者目前没有JUnit版本能够满足我的需求吗? 那么大多数人都会使用Hamcrest声明吗?

如何将标头或参数添加到使用Selenium Webdriver处理的HTTP请求中?

我正在使用Selenium Webdriver进行Web应用程序的unit testing。 它在JUnit测试中使用尽管广泛阅读可用文档并搜索,我找不到一种方法: 将标头添加到驱动程序传递的HTTP请求中。 向这样的请求添加参数,就好像驱动程序在提交表单后获得目标URL一样。 可以创建一个具有适当forms的测试网页,并让Webdriver反弹以自动获取这些参数,但这是一个非常难看的黑客。 我想避免它,特别是为了测试primefaces性。 (这是unit testing。) 在Wendriver之前,我使用Spring的MockHttpServletRequest和MockHttpServletResponse来做这个,它就像一个魅力,但我想利用Webdriver的强大function来断言目标页面的内容。