我是Mockito的新手,想在单元测试中使用它.
我不喜欢的是为没有明确定义行为的方法创建的Mockito.mock(Class<T>)
返回默认值(如null
)的模拟.相反,我希望他们在这种情况下抛出一个异常,所以我知道我需要添加这个定义.
我尝试了以下方法:
SomeType m = mock( SomeType.class, new ThrowsException( new SomeRuntimeException( ... ) ) );
when( m.a() ).thenReturn( ... );
m.a(); // ok
m.b(); // throws exception
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为在调用期间已经抛出了异常when()
.
有没有其他方法来实现这一目标?
我正在使用Java 6的注释处理,即可以在其中找到的内容javax.annotation.processing
(不是Java 5的APT).
我不知道各个之间的概念性区别是什么Element
,Type
以及Mirror
类是.由于我不太了解这一点,因此很难有效地编写注释处理器.有各种方法可以在这些概念之间"转换",但我不确定在使用它们时我在做什么.
所以,例如,让我有一个实例AnnotationMirror
.
当我打电话时,getAnnotationType()
我得到一个实例DeclaredType
(TypeMirror
无论出于何种原因实现).
然后我可以调用asElement()
这个并获得一个实例Element
.
发生了什么事?
是否可以MarkupContainer
动态生成标记,即不为其存储HTML文件?
我想过将标记作为数据库中的普通字符串读取,以提供类似CMS的功能.
当你LOG.debug("Exported {}.", product)
在slf4j中执行某些操作时,它最终会在参数上调用toString(),例如product
.
出于某些原因,我不能在我想用作参数的所有类上覆盖toString().有些类来自第三方jar,其他类也会在其他上下文中调用toString(),我想在日志语句中打印的信息不可用.
但是,我有一个用于调试目的的类,它有一个方法DebugFormatter.format(Object)
,有一个很长的instanceofs级联,它选择例程来查找关于该对象的一些有用的调试信息.
我的问题是:是否可以配置slf4j,以便它调用这样的静态方法而不是toString()?
当然,我可以在将对象作为参数传递之前在对象上调用我的格式方法,Logger.debug()
但是即使没有启用相应的记录器也会执行它.所以我不得不用if (LOG.isDebugEnabled())
它来包围它,这意味着错过了在debug()中拥有参数的重点.
是否有一种干净的方式来运行参数化的jUnit 4测试而不更改跑步者,即不使用
@RunWith(Parameterized.class)
?
我有单元测试,需要一个特殊的跑步者,我不能用这个替换Parameterized
.也许有某种"跑步者链",所以我可以同时在两个跑步者?(只是猜测......)
在我的Web应用程序中,有两个单独的lib目录:
/lib
,和/web/webroot/WEB-INF/lib
.其背后的想法是,在后者的一个库由仅前端代码,和由第一个使用两个前端和业务逻辑代码.有一个地方一个类加载器,它可以让业务逻辑代码没有看到罐子在/ web /根目录/ WEB-INF/lib目录下.
我怎么能告诉ivy某些依赖项应该转到第二个目录而其他所有依赖项都转到第一个目录?
由于Web类加载器可以在两个目录中看到jar,而且我不希望jar存在于两个目录中,因此这并不是一件好事.
annotations ×1
ivy ×1
java ×1
junit ×1
junit-runner ×1
mockito ×1
slf4j ×1
unit-testing ×1
wicket ×1