当前位置: 首页 > 知识库问答 >
问题:

如何模拟在一个方法中创建的对象,该方法只使用mockito而不使用PowerMockito进行测试?

司徒焕
2023-03-14

第二个类有一个简单的方法,它只返回一个字符串,该字符串作为参数传递给该方法

public class Second{
    public String show(String y ){
        return y
    }
}

现在有一个Sample类,我在Sample Classe的方法中调用了这个show方法并返回字符串

public class Sample{
    public String sampleMethod(){
        Second s = new Second();
        return s.show("This should not be displayed");
    }
}

现在我正在测试示例类,因此我创建了一个名为SampleTest的文件

public class SampleTest{
    @Mock
    Second s;

    @InjectMocks
    Sample s = new Sample();

    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
        when(s.show(any(String.class))).thenReturn("This should be displayed");
    }

    @Test
    public void sampleMethodTest(){
        assertEquals("This should be displayed", s.sampleMethod());
    }
}

共有1个答案

楮星鹏
2023-03-14

samplesecond紧密耦合,方法是在测试中的方法中创建sample。

鉴于目前所述的限制,

我只需要用mockito而不是powermockito

public class Sample {

    private final Second second;

    public Sample(Second second) {
        this.second = second;
    }

    public String sampleMethod(){
        return s.show("This should not be displayed");
    }
}
public class SampleTest {
    @Mock
    Second second;

    @InjectMocks
    Sample sample; //second will be injected here

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);            
    }

    @Test
    public void sampleMethodTest() {
        //Arrange
        String expected = "This should be displayed";
        when(second.show(any(String.class))).thenReturn(expected);

        //Act
        String actual = sample.sampleMethod();

        //Assert
        assertEquals(expected, actual);
    }
}
 类似资料:
  • 您好,我对Junit和Mockito的单元测试相当陌生。我认为我对这些原则有一个相当合理的理解,但我似乎找不到任何解释来解释我特别想在网上测试什么。 我想测试一个方法,它调用其他几个方法(void和non-void),该方法还实例化了方法体中的对象。不幸的是,我不能分享代码,因为它不是我的,但这里有一个通用格式: 目前我只关心测试method_1,我不能直接测试,因为它是一个私有方法,所以我必须通

  • 在尝试模拟InetAddress中的静态方法时,我遇到了奇怪的问题。我成功地能够为许多其他类模拟静态方法,并且一切正常,但InetAddress显示不同的行为。我使用的是JUnit 4. x、Mockito 1.9.5 下面给出了使用Mockito和PowerMock以及InetAddress模拟的测试- 当我将下面给出的方法放入某个实用程序InetAddress中时。getLocalHost()

  • 我想通过ts-Mockito@2.5.0创建一个类的模拟对象,但我无法正确设置它。 以下是设计的测试用例: 正如测试用例所暗示的,我希望从我的模拟中返回“I AM mocked”的值。 我应该如何设置模拟,使其按预期工作? 旁白:这个测试用例只是为了展示我正在经历的奇怪行为。这不是我真正的测试。我想在不同服务的单元测试中使用模拟。)

  • 我的测试存根是 我在这里做错了什么?

  • 使用mockito模拟一个方法会确保永远不会调用被模拟的方法吗?我有一个主类,它包含一些我想为其编写单元测试的代码,还有一个单元测试类MainTest,它包含主类的单元测试。 eg: 源类: JUnit测试(使用mockito) 这项测试失败了。为什么?

  • 问题内容: 我想编写一个JUnit测试来验证以下代码是否使用BufferedInputStream: (FilterFactory是一个接口。) 到目前为止,我的测试如下: 调用PowerMockito.spy会引发以下消息异常: 我应该使用什么代替PowerMocktio.spy来设置对whenNew的调用? 问题答案: 信息很明显:您不能模拟不可见和最终类。简短答案: 创建一个 匿名 类 的