我有以下场景
Class A {
someMethod() {
B b = new B();
b.someMethod();
}
}
Class B {
String someMethod() {
C c = new C();
return c.someMethod();
}
}
Class C {
String someMethod() {
D d = new D();
return d.getId()
}
}
Class D {
getId() {
return "id123";
我目前正在尝试在我们的项目中引入单元测试,以便测试与我们给定的API的交互。不幸的是,这个API非常陈旧丑陋,并且包含一些奇怪的东西(比如实现) :-(.在我们的代码中,我们使用A类的对象。
public class A {
static B b = new B();
public int foo(){return 666;}
}
正如你所看到的,这个类包含一个静态字段b,它在初始化时被类B的一个新实例填充。然而,B类的构造在测试环境中是不可能的。不知何故,它只能在生产环境中工作。让我们用这样的东西来模拟它。
public class B {
B(){
目标是使用mockito执行单元测试。在第一个练习中,我创建了依赖类属性的虚拟对象,并测试了类,它工作得很好。
现在,我想使用mockito模拟没有直接测试的class属性。但我得到了NullPointerException。敬请指教。
java.lang.NullPointerException
at edu.uncc.ssdi.FlightReservation.<init>(FlightReservation.java:25)
at edu.uncc.ssdi.FlightReservationTest.testFlightRe
JUnit5不支持PowerMockRunner,因此当您从JUnit4迁移到JUnit5时,以下代码将无法工作。
例如:您尝试注入mock的代码
import javax.naming.InvalidNameException;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.publish();
}
public void publish() {
try {
我正在使用PowerMock和Roboelectric,并且想为一个类模拟一个配套的对象函数。当我这样做时,我得到一个错误:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
我得到的基本上是这样的:
open class Moc
我希望在AbstractHttpClient.java中使用模拟AbstractHttpClient.java和execute方法,DefaultHttpClient扩展了AbstractHttpClient java类,而execute方法是最终方法,所以我需要增强模拟最终方法的能力。
@RunWith(PowerMockRunner.class)
@PrepareForTest(DefaultHttpClient.class)
//@PrepareForTest(AbstractHttpClient.class)
public class RestClientTest {
D
我正在尝试使用Mockito.when和doReturn()来模拟方法createInstanceB。这总是调用real方法。例如:
Class A {
public B createInstanceB(any, any) {
B b = new B();
b.api();
}
}
我使用下面的方法导入org.mockito.Mockito;导入静态org.mockito.Mockito.*;
Class ATest {
A a;
B b;
@Before
Public void setup{
a = A.getInstance();
我试图模拟一个新的对象创建
public class MyServiceTest {
MyClass myClass;
myClass = Mockito.mock(MyClass.class);
Mockito.when(new MyClass()).thenReturn(myClass);
}
错误:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call
我试图伪装这个物体,但失败了。
Class A {
protected SomeResponse someRespsoonse;
public SomeResponse mapping(){
someResponse = new SomeResponse();
return someResponse ;
}
}
然后我需要用下面的课程来测试它:
@RunWith(MockitoJUnitRunner.class)
@PrepareForTest(A.class)
class ATest{
@Mock
A a = Mocktio.mock(A.class);
@Mock
如何使用PowerMockito或Mockito模拟超类中的"getServerName“方法? public class A extends B{
public static String builder(){
return new A().get();
}
private String get() {
return this.getServerName();
}
}
public abstract class B{
protected String getServerName(){
return "Server 1
我是Mockito的新手。我有个问题。我正在尝试模拟一个类,并使用一个hashmap调用该类的一个方法,该hashmap返回修改后的相同hashmap。但是我看到mocked方法没有被调用。如果我真的验证了我得到的消息是“想要但没有调用,实际上,与这个mock没有交互”
下面是我要测试的代码类
public class ClassA{
private ClassB bb = new ClassB();
public boolean init() {
bb= new ClassB();
bb.init();
return tr
谁能给出一个想法,如何使用PowerMockito模拟A a= new B()的对象创建(类B实现了接口A)?我已经尝试了如下。但是mock对象不会在测试下的类中使用,但会在该类下创建一个新对象。 B b=Mockito.spy(B.class);
PowerMockito.whenNew(B.class).withNoArguments().thenReturn((b));
我有一个类方法,如下所示,它创建一个本地对象,并对该本地对象调用一个方法。
public class MyClass {
public someReturn myMethod(){
MyOtherClass otherClassObject = new MyOtherClass();
boolean retBool = otherClassObject.otherClassMethod();
if(retBool){
// do something
}
}
}
public class M