使用JMockit模拟API,我如何模拟一个静态工厂方法来返回一个假的?
我的问题类似于如何模拟一个静态方法,该方法提供了一个用JMockit模拟的类的实例?,但我的合作者的工厂方法在我的测试环境中抛出了一个异常(这是正确的)。因此,我需要模拟工厂来消除有问题的操作。带有工厂方法的类是抽象的,并且只有包私有构造函数。
public abstract class Collaborator {
public static Collaborator collaboratorFactory() {
//... some operations that throw in test env ...
return new CollaboratorImpl();
}
Collaborator() { }
public int methodToMock() {
return 5;
}
}
public class ClassUnderTest {
public int getValue() {
return Collaborator.collaboratorFactory().methodToMock();
}
}
public class TestClassUnderTest {
static class MockCollaborator extends MockUp<Collaborator> {
@Mock public int methodToMock() {
return 124;
}
}
@Test
public void test1() throws Exception {
new MockCollaborator();
ClassUnderTest t1 = new ClassUnderTest();
assertEquals(124, t1.getValue());
}
}
static class MockCollaborator extends MockUp<Collaborator> {
@Mock public Collaborator collaboratorFactory() {
// ... I don't know what to return here ...
}
}
因为Collaborator是抽象的,所以我必须使用两个模型来完成这个工作,一个用于Collaborator,另一个用于CollaboratorImpl。抽象类中的工厂方法通过getMockedInstance()返回假实现类的实例:
static class MockCollaboratorImpl extends MockUp<CollaboratorImpl> {
@Mock public void $init() {};
@Mock public void $clinit() {};
@Mock public int methodToMock() {
return 124;
}
}
static class MockCollaborator extends MockUp<Collaborator> {
@Mock public Collaborator collaboratorFactory() {
return new MockCollaboratorImpl().getMockInstance();
}
}
我的测试用例是: 当我调用时,实际上不会调用此方法。如何在side中模拟方法的结果?
这就是考验
下面的事情我需要帮助, 我必须使用PowerMock/Mockito为一个方法编写一个JUnit,该方法调用外部jar中存在的最终类的静态方法。 我需要为其编写JUnit测试的方法是: 在上面的代码中是一个最终类,是中的静态方法。 我已经尝试编写如下所示的测试,但调试时节对象(节)显示为null。可能调用的是实际的代码(),而不是模拟。 请帮助我使用powermockito/mockito编写Ju
错误:org.mockito.exceptions.misusing.missingMethodInvocationException:when()需要一个参数,该参数必须是“mock上的方法调用”。例如:when(mock.getArticles()).thenreturn(articles); 此外,此错误可能会出现,因为:1。您可以存根:finall/private/equals()/has
我试图模拟一个单例类(SessionDataManager),通过调用静态getInstance()方法获得一个实例,但所有尝试似乎都返回null。 我试过了
问题内容: 我想从包含2个静态方法m1和m2的类中模拟静态方法m1。我希望方法m1返回一个对象。 我尝试了以下 1) 这将同时调用m1和m2,它们具有不同的返回类型,因此会给出返回类型不匹配错误。 2) 但是,执行m1时不会调用此方法。 3) 给出了我不能从http://code.google.com/p/powermock/wiki/MockitoUsage获得的,无法提供模拟部分的编译器错误。