Tag: unit testing

Mockito:嘲笑一个将在for循环中循环的arraylist

我有一个测试方法,其中包含以下代码段: private void buildChainCode(List lines){ for(TracedPath path : lines){ /…/ } } 我的unit testing代码如下所示: public class ChainCodeUnitTest extends TestCase { private @Mock List listOfPaths; private @Mock TracedPath tracedPath; protected void setUp() throws Exception { super.setUp(); MockitoAnnotations.initMocks(this); } public void testGetCode() { when(listOfPaths.get(anyInt())).thenReturn(tracedPath); ChainCode cc = new ChainCode(); cc.getCode(listOfPaths); /…/ } } 问题是,在运行测试时,测试代码永远不会进入for循环。 什么时候我应该指定条件,以便输入for循环? 目前我已经指定了when(listOfPaths.get(anyInt())).thenReturn(tracedPath) ,但我想它从未使用过。

单位测试jerseyRestful Services

我是unit testing的新手,我想在一个项目中测试一些jersey服务。 我们正在使用Junit。 请指导我以更好的方式编写测试用例。 码: @GET @Path(“/getProducts/{companyID}/{companyName}/{date}”) @Produces(MediaType.APPLICATION_JSON) public Object getProducts(@PathParam(“companyID”) final int companyID, @PathParam(“date”) final String date, @PathParam(“companyName”) final String companyName) throws IOException { return productService.getProducts(companyID, companyName, date); } 上面提到的服务工作正常,我想编写junit测试用例来测试上面提到的方法。 上述方法将以JSON格式检索产品List ( List )。 我想编写测试用例来检查响应状态和json格式。 注意:我们使用的是Jersey 1.17.1版本。 帮助将不胜感激:)

Methods.class中的代码重用与策略模式和dependency injection

Status: Fendy和Glen Best的答案同样被我接受和尊重,但由于我可以接受并给予赏金,我选择了Fendy的答案。 Scenario: 如果我有一些代码 必须在许多类中 重复使用很多次 (很少有明显的次要参数更改)和并发线程,那么采用哪种方法? 必须重用的代码可以是任何理智的东西(适当考虑静态和非静态上下文和方法制作技术)。 它可以是一个算法,一个DB方法做连接,操作,关闭。 任何东西。 创建一些类MyMethods.class 并将所有这些方法放入其中 。 表1.A 使方法 static并直接调用(由所有类和并发线程)作为MyMethods.someMethod(); 1.B. 使方法 non-static并且在调用它们时,通过MyMethods mm = MyMethods(); mm.someMethod(); instantiate整个类 MyMethods mm = MyMethods(); mm.someMethod(); MyMethods mm = MyMethods(); mm.someMethod(); 使用https://en.wikipedia.org/wiki/Strategy_pattern中声明的策略模式 (此处附带的代码)。 使用https://en.wikipedia.org/wiki/Dependency_injection#Java中所述的dependency injection Problems: 有些人会说使用这种方法进行 unit testing http://en.wikipedia.org/wiki/Unit_testing 是不可能的 , 在换出后者时会遇到麻烦 。 如果你想测试你的类并使用依赖的模拟版本 表1.A 并发调用或多个类会有任何问题吗? 特别是在JDBC static methods中只是一个例子? 1.B. […]

使用Maven 2和Glassfish 3对EJB进行unit testing

我一直在尝试设置我的应用程序,以便我可以整天测试它的EJB,但我似乎无法通过看似简单的问题。 我在NetBeans 6.9中设置了标准的Maven Web应用程序。 我已经自动为其中一个EJB生成了unit testing,但每当我去运行它时,我都会收到错误消息: Testcase: initializationError(com.example.ExampleTest): Caused an ERROR Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 我已经研究了这个,我很确定问题是我的pom当前指向一个只包含API的jar javax javaee-web-api 6.0 […]

可靠的Javaunit testing自动化? (JUnit的/ Hamcrest / …)

意图 我正在寻找以下内容: 坚实的unit testing方法 我的方法中缺少什么? 我做错了什么? 我在做什么是不必要的? 一种尽可能自动完成的方法 目前的环境 Eclipse作为IDE JUnit作为测试框架,集成到Eclipse中 Hamcrest作为“匹配器”库,具有更好的断言可读性 Google Guava用于前置条件validation 目前的做法 结构体 每个类测试一个测试类 方法测试分组在静态嵌套类中 测试方法命名以指定测试的行为+预期结果 Java Annotation指定的预期exception,而不是方法名称 方法 注意null值 注意空列表 注意空字符串 注意空数组 注意由代码更改的对象状态不变量(后置条件) 方法接受记录的参数类型 边界检查(例如Integer.MAX_VALUE等…) 通过特定类型记录不变性(例如Google Guava ImmutableList ) ……有这个列表吗? 好的测试列表示例: 在数据库项目中检查的事项(例如CRUD,连接,日志记录,……) 要检查multithreading代码的事情 要检查EJB的事情 ……? 示例代码 这是一个人为的例子来展示一些技巧。 MyPath.java import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Arrays; import com.google.common.collect.ImmutableList; public class MyPath […]

如何在多个测试类之间共享JUnit BeforeClass逻辑

目前,我的所有JUnit测试都是从提供用@BeforeClass和@AfterClass注释标记的方法的公共基类扩展而来的 – 所有这些都是为了要使用的测试设置一堆静态资源/服务。 由于以下几个原因,这对我来说似乎很尴尬: JUnit4的一部分(根据我的理解)是我们不再需要这种经典的测试inheritance。 当我将这些测试作为套件的一部分运行而不是单独运行时(我们经常这样做),多次调用@BeforeClass和@AfterClass ,减慢测试速度 – 我们真的应该只调用一次 我想要做的是以某种方式将当前的BeforeClass / AfterClass逻辑移出inheritance链,并将其转换为可以由各个测试和整个套件共享的内容。 可以这样做吗? 如果是这样,怎么样? (如果重要的话,我正在使用JUnit 4.7,更新到不同的版本可能很难卖)

测试Spring @MVC注释

前几天我遇到了一个问题,其中一个@Valid注释被意外地从控制器类中删除了。 不幸的是,它没有打破我们的任何测试。 我们的unit testing都没有实际运行Spring AnnotationMethodHandlerAdapter路径。 我们直接测试我们的控制器类。 如果我的@MVC注释错误,我该如何编写一个正确失败的单元或集成测试? 有没有办法我可以让Spring用MockHttpServlet找到并运用相关的控制器?

如何为java注释处理器编写自动化unit testing?

我正在尝试使用java注释处理器。 我能够使用“JavaCompiler”编写集成测试(实际上我现在正在使用“hickory”)。 我可以运行编译过程并分析输出。 问题:即使我的注释处理器中没有任何代码,单个测试也会运行大约半秒钟。 这在TDD风格中使用它太长了。 嘲笑依赖关系对我来说似乎很难(我必须模拟整个“javax.lang.model.element”包)。 有人成功为注释处理器(Java 6)编写unit testing吗? 如果不是……你的方法是什么?

测试RESTful服务的方法?

我想直接通过HTTP测试我的RESTful应用程序,我正在寻找可以帮助我完成该任务的工具。 基本上我正在寻找一个简单的HTTP请求包装器,可以提交例如HTML表单或序列化资源作为JSON或XML。 如果有一种方法可以validation服务是否实际遵循REST架构指南(无状态,URI,内容协商等),那将会很棒。 能够与JUnit一起使用将是一个方便的奖励。 你知道任何可以帮助我做我想做的图书馆(这不仅仅是一个简单的http客户端)吗?

@Mock注释后,mock实例为null

我尝试运行此测试: @Mock IRoutingObjHttpClient routingClientMock; @Mock IRoutingResponseRepository routingResponseRepositoryMock; @Test public void testSendRoutingRequest() throws Exception { CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse(); completeRoutingResponse.regression_latencyMillis = 500L; Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse); RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun (routingClientMock, routingResponseRepositoryMock); … } 但我得到NullPointerException: Mockito.when(routingClientMock. 我错过了什么?