我最近正在编写一个JUnit测试,我承认Mockito要么需要所有原始值,要么使用所有Matcher,但是我发现下面的情况在所有Matcher中仍然失败,错误消息是:
无效使用参数匹配器!0匹配预期,1记录:
我进行了一些测试,它看起来与使用存根方法作为eq() Matcher的值有关。见下面的例子:
我有一个A类非常简单的
public class A {
public void testMockitoMatcher(double a, String b){
}
}
这里是我的测试用例
import org.junit.Test;
import static org.
假设您有方法someMethod,您将如何通过它来测试它?
Mockito.when(someClass.someMethod(someParam)).thenReturn(someValue);
var bar = foo() // SUT: ends upp calling someMethod somewhere in the stack
assertThat(bar).isEqualTo(someValue);
vs
Mockito.when(someClass.someMethod(someParam)).thenReturn(someValue);
var bar = foo()
我在JUnit测试中使用了Mockito。该测试是一个集成测试,测试了整个场景,因此其中包含了许多断言和verify(mock)。
我的问题是,我正在编写一些生产代码,执行一些断言,然后验证模拟工作,直到有相同的模拟调用。请参阅简化代码:
interface I {
void m1();
void m2();
}
// some decorator
class T implements I {
public T(I decorated) {
/*...*/
}
/* ... */
}
public void testInvalid(
我正在尝试测试以下方法: public void transactionToBN() {
List<CustomerDelivery> list = getListOfArticleByStatusA();
...
...
if (!list.isEmpty() || list != null) {
Hashtable<String, Order> docIds = new Hashtable<>();
for (int i = 0; i
Mockito的JavaDocs on verify methods链接到关于询问和告知的。我有点不知所措,特别是“存根交互,被隐式验证的”。
让我们举一个例子:
想象一下有这门课
class FooDao {
private EntityManager entityManager;
public FooDao(EntityManager entityManager) {
this.entityManager = entityManager;
}
public List<Foo> findFooByName(String name
我正在使用Mockito进行单元测试,我得到了以下异常。
org.mockito.exceptions.base.MockitoException:
`'setResponseTimeStampUtc'` is a *void method* and it *cannot* be stubbed with a *return value*!
Voids are usually stubbed with Throwables:
doThrow(exception).when(mock).someVoidMethod();
***
If you're unsur
我是Mockito的新手,我想知道如何存根get/set对。
例如
public interface Order {
public short getStatus();
public void setStatus(short status);
}
我如何才能让它们正确地运行:
如果在测试中的某个地方调用了setStatus(4);,我希望getStatus()返回4。如何做到这一点?
我正在使用JUNIT与Powermockito和EclEmma一起测试我的代码。现在有个问题。我要考这门课:
public class Main
{
private static final Logger slf4jLogger = LoggerFactory.getLogger(Main.class);
private static final Marker marker = MarkerFactory.getMarker("Test");
/**
* @param args
*/
public static v
我有一个以InvocationContext作为参数的LoggerInterceptor类。对于这个类,我试图编写一个单元测试,但我被困在了第一行:
public class LoggerInterceptor{
public method log(InvocationContext context) {
String name = invocationContext.getTarget().getClass().getName();
.....
}
我的测试如下所示:
@Test
public void logTest() throws Exception {
在顽固使用ClassOne.methodOne时,我会收到以下错误消息,说明如何使用返回值的void方法,即使ClassOne.methodOne不是空的。这个错误似乎与ClassTwo.methodTwo有关,尽管我一直在坚持ClassOne.methodOne。
org.mockito.exceptions.base.MockitoException:
`'methodTwo'` is a *void method* and it *cannot* be stubbed with a *return value*!
Voids are usually stubbed wi
public class VerifyClass {
public VerifyClass() {
System.out.println("Verify Class constructor called");
}
public int getSum(int a,int b){
System.out.println("get sum called");
return a+b;
}
}
以上类的getSum()方法通过spy()进行了测试。下面是如何使用间谍。
@Test
publ
我在我的测试类中有多个模拟语句,一切都很好。我将为DAO模拟添加一个新语句,如下:
Mockito.when(myDAO.saveOrUpdate(Mockito.any())).thenReturn(Mockito.any());
But I get exception as :
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!
我使用了参数匹配,而不是原始值,所以我没有混合anything.What可以在这里吗?
我正在为一个遗留代码编写单元测试,它基本上是使用链式存根在方法中设置和获取值,我正在测试的类不依赖于其他类,所以我没有模拟任何东西,只有这样一个方法
public class SampleClass {
public void process(Context context){
context.getState().setValue(MathUtil.roundToThree(context.getState().getValue());
}
}
我所写的测试课程如下:
@RunWith(MockitoJUnitRunner.class)
public class TestSa
当我们使用PowerMock (和Mockito)时,我们需要模拟类的所有静态方法吗?我的意思是,假设我们有:
class MockMe {
public static MockMe getInstance(){
//return new Instance via complex process;
}
public static List<X> anotherStaticMethod(){
// does xyz
}
}
我的问题是,如果我需要模拟getInstance方法,是否也有必要模拟"anotherS
我有一个类,它调用第三方系统来获取我想要使用Mockito模拟的数据。下面是我的类是如何设置的伪代码。
// class I will be spying
public class SomeService {
// method I want to full test
public List<String> methodA(List<String> list) {
... omitted code ...
// internal call to method in the same class that will be m
我在用sinon和ava做测试。我坚持一些函数,并检查这些函数是否被调用。我已经检查了控制台,函数正在被调用。但是,sinon将其返回为notCalled(.called为false)。下面是一段代码。
const test = (a, b) => {
transformer.getActivity(a, b).then((response) => {
var response = JSON.parse(response);
var data = response.data;
getToken.getToken(testData.organizati