Tag: unit testing

大量的unit testing会导致Finding Binder Transaction崩溃

我已经为我的Android应用程序编写了大约400个unit testing。 如果我按包运行测试包,一切正常,我的所有测试都通过。 但是,如果我尝试同时运行它们,最终(大约360次测试),Android开始吐出!!! Failed Binder Transaction Errors !!! !!! Failed Binder Transaction Errors !!! 。 在大约10-20个这些错误之后,我正在测试的应用程序的进程被杀死,unit testing甚至都没有完成。 我应该注意,在此期间Eclipse会报告在控制台中Collecting test information 。 我认为这很奇怪,因为它表明它正在运行测试,即使JUnit UI没有反映出来。 当一切正常时,在Collecting test information阶段我看到测试运行,然后出现JUnit UI,然后再次运行所有测试(我通过阅读logcat知道这一点)。 那是(我认为)一个单独的问题,但如果有人知道那是什么,我觉得我会提到它。 编辑截至2011年6月6日 根据Christopher在下面的回答,我已经证实只有在尝试通过Eclipse运行时才会发生这种情况。 如果我使用ANT运行我的测试套件,所有测试最终都会执行。 当我现在尝试运行我的测试套件时,Eclipse基本上依赖于“收集测试信息”。 我没有让它长时间运行,但我会尽快试一试,看看它是否能完成。

在正在测试的同一个类中模拟私有方法

我有一个名为MyClass的Java类,我想用JUnit进行测试。 我想测试的公共方法methodB在同一个类中调用私有方法methodB来确定要遵循的条件路径。 我的目标是为methodA的不同路径编写JUnit测试。 此外, methodB调用一个服务,所以我不希望它在运行JUnit测试时实际执行。 模拟methodB并控制其返回的最佳方法是什么,以便我可以测试’methodA’的不同路径? 我更喜欢在编写模拟时使用JMockit,所以我对任何适用于JMockit的答案都特别感兴趣。 这是我的示例类: public class MyClass { public String methodA(CustomObject object1, CustomObject object2) { if(methodB(object1, object2)) { // Do something. return “Result”; } // Do something different. return “Different Result”; } private boolean methodB(CustomObject custObject1, CustomObject custObject2) { /* For the sake of this example, assume the CustomObject.getSomething() * method […]

使用jersey-spring3从JerseyTest容器中检索托管bean

此问题是从上一个问题指定自定义应用程序上下文的后续问题。 我们正在使用泽西弹簧3将泽西1.x的一些数据服务从泽西1.x迁移到泽西2.x. 我们有几个inheritance自JerseyTest的测试类。 其中一些类使用未在web.xml文件中指定的自定义applicationContext.xml文件。 出于对象模拟的目的,我们将在Jersey资源中模拟一些组件。 在Jersey 1.x中,我们可以通过模拟应用程序上下文文件中的对象 并检索这些模拟的实例如下 ClassToMock obj = (ClassToMock)ContextLoader .getCurrentWebApplicationContext() .getAutowireCapableBeanFactory() .getBean(“mockBean”); 如何使用Jersey 2.x使用jersey-spring3实现同样的目标? 我已经梳理了API文档 , 用户指南和一些来源,但无法找到答案。 谢谢。 编辑: 我们将在JAX-RS资源中使用模拟bean。 我们的服务接口已经@Autowired到我们的资源中。 例如 @Path(ProductResource.RESOURCE_PATH) @Component @Scope(“prototype”) public class ProductResource extends GenericResource { /* * Members */ public static final String RESOURCE_PATH = “product/”; @Autowired protected ProductService productService; … 我们想要模拟并设定对这些服务的期望。 例如

j在不同情况下使用相同的exception

我正在为一个解析String的构造函数编写一个jUnit测试,然后检查很多东西。 当有错误的数据时,对于每一件事,都会抛出一些带有不同消息的IllegalArgumentException。 所以我想为它编写测试,但是我如何识别抛出的错误? 这是我该怎么做的: @Test(expected=IllegalArgumentException.class) public void testRodneCisloRok(){ new RodneCislo(“891415”,dopocitej(“891415”)); } 这就是我想成为的样子,但我不知道是否有可能以某种方式写出来: @Test(expected=IllegalArgumentException.class(“error1”)) public void testRodneCisloRok(){ new RodneCislo(“891415”,dopocitej(“891415”)); }

建议一个JPAunit testing框架

如何对JPA代码进行unit testing? 有没有办法自己生成unit testing用例? 注意:我很懒,也不熟悉Unit Test代码。

使用PowerMock或您的测试对您的设计有多大影响?

多年来我一直是EasyMock的粉丝,多亏了SO,我遇到了对PowerMock的引用,并且它能够模拟构造函数和静态方法,这两种方法在将测试转换为遗留代码库时会导致问题。 显然,unit testing(和TDD)的巨大好处之一是它导致(强制?)更清洁的设计,在我看来,PowerMock的引入可能会减损它。 我会看到这主要表现为: 回到初始化合作者而不是注入它们 使用静态而不是使方法归协作者所有 除此之外,关于我的代码被操作用于测试的字节码,对我来说并不合适。 我不能真正给出具体的理由,只是因为它只是为了测试而不是为了生产而让我感到有点不安。 在我目前的演出中,我们真的推动unit testing作为人们改进编码实践的一种方式,并且感觉将PowerMock引入等式可能会让人们稍微跳过这一步,所以我不愿意开始使用它。 话虽如此,我真的可以看到在哪里使用它可以减少开始测试类需要完成的重构量。 我想我的问题是,人们使用PowerMock(或任何其他类似的库)获得这些function的经验是什么,您是否会使用它们以及您希望您的测试对您的设计有多大影响?

如何使用默认构造函数伪造InitialContext

所有, 我试图在一些古老的java代码中进行一些unit testing(没有接口,没有抽象等) 这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它在web.xml / context.xml文件中设置了数据库信息。 现在,我已经弄清楚如何制作一个假的ServletContext,但代码有 InitialContext _ic = new InitialContext(); 到处都是(所以更换它是不可行的)。 我需要找到一种方法来使默认的InitialContext()能够执行_ic.lookup(val)而不抛出exception。 我假设有一些方法可以加载context.xml,但是这种魔法是如何工作的,我正在画一个空白。 有人有主意吗?

unit testing辅助方法?

我有以前有大量方法的类,所以我将这个方法的工作细分为’helper’方法。 这些辅助方法被声明为private以强制封装 – 但是我想对大型公共方法进行unit testing。 对辅助方法进行unit testing也是好的,就好像其中一个方法失败了,调用它的公共方法也会失败,这样我们就可以找出它失败的原因了吗? 另外,为了使用模拟对象测试这些,我需要将其可见性从私有更改为受保护,这是否可取?

当逻辑基本相同时,复制和粘贴unit testing是否可以?

我目前有10个测试,只要路径中有一块或墙壁,我的俄罗斯方块片就不会向左移动。 现在,我将不得不为正确的运动测试相同的行为。 如果我只是复制我已经拥有的左侧运动的10个测试并且仅进行所需的更改并且对代​​码本身执行相同的操作,那是不是太糟糕了? 或者,如果逻辑基本相同,我应该从头开始再进行每次测试吗?

Mockito thenReturn返回相同的实例

我在Mockito有这个: when(mockedMergeContext.createNewEntityOfType(IService.class)).thenReturn(new ServiceMock()); createNewEntityOfType方法应始终返回一个新的ServiceMock实例,但它返回相同引用的两倍。 为什么thenReturn方法不返回新的ServiceMock ?