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

使用Mockito框架进行测试活动

百里默
2023-03-14
public interface CalculatorOperationsInterfaces {
    public double add(double input1, double input2);
    public double subtract(double input1, double input2);
    public double multiply(double input1, double input2);
    public double divide(double input1, double input2);
}
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements CalculatorOperationsInterfaces {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public double add(double input1, double input2) {
        return (input1 + input2);
    }

    @Override
    public double subtract(double input1, double input2) {
        return (input1 - input2);
    }

    @Override
    public double multiply(double input1, double input2) {
        return (input1 * input2);
    }

    @Override
    public double divide(double input1, double input2) {
        if(input2==0)
            return -1;
        else
            return (input1 / input2);
    }
}

CalculatorOperationSmockTest.java

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import static org.mockito.Mockito.when;

// @RunWith attaches a runner with the test class to initialize the test data
@RunWith(MockitoJUnitRunner.class)
public class CalculatorOperationsMockTest {

    //@Mock annotation is used to create the mock object to be injected
    @Mock
    CalculatorOperationsInterfaces calcService;

    @Before
    public void setUp() {
        calcService = new MainActivity();
    }

    @After
    public void tearDown() {
        calcService = null;
    }


    @Test
    public void add(){
        //add the behavior of calc service to add two numbers
        when(calcService.add(10.0,20.0)).thenReturn(30.00);
        //test the add functionality
        Assert.assertEquals(calcService.add(10.0, 20.0),30.0,0);
    }

}

我成功地使用JUnit测试了上面的MainActivity.java,但是我是Mockito框架的新手,当我尝试运行CalculatorOperationSmockTest.java文件时,我得到了下面的错误,我不知道如何解决它

Class not found: "myappmania.local_jvm_unit_test.CalculatorOperationsMockTest"Empty test suite.

共有1个答案

臧俊杰
2023-03-14

这里至少存在3个问题:

>

  • 查看以下答案可以解决“空测试套件”错误消息的问题-确保您有一个指定InstrumentationRunner的运行配置。
  • 调用new MainActivity()不能获得活动的实例。正确的成语是:

    @Rule
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class, true, false);
    

    后来呢:

    calcService = activityRule.launchActivity(null);
    

  •  类似资料:
    • 问题内容: 有人可以帮我这个忙。我正在使用Jersey休息测试框架版本2.21(在Grizzly容器上)编写Rest资源的单元测试。 当我调试测试类时,看到myManager的模拟对象。但是,当调试进入“ MyResouce类”时,myManager对象将变为null并得到NullPointer异常。 尝试过其他人提供的解决方案,但是没有运气。请有人帮我。我将近三天就遇到这个问题。:( 我的资源类

    • 我使用JUnit4和Mockito创建了一个Spring Boot2应用程序。当我测试某种方法时。会出现这样的例外: 这是我的测试代码 SuveryService.java SurveyRepository.java 我引用了这篇文章Mockito NullPointerException,但这个问题仍然存在。任何帮助都将被应用。

    • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

    • 我正在构建一个网络项目,它使用Maven进行构建,并使用泽西进行RESTful API。我使用TestNG和泽西测试框架编写了单元测试,并在内存中运行它们,而不是在网络服务器上。 在我的测试中,我对MySQL数据库进行了JDBC调用,并得到了一些结果。当我使用TestNG for Eclipse插件从Eclipse内部运行时,测试运行良好。但是,当我尝试使用以下两个命令之一从Maven运行时: 或

    • 我正在为我的应用程序创建一个Spring BootAPI。我试图使用mockito对我的服务实现进行单元测试,以模拟出细节。该服务将向数据库添加一个新的构建实体。下面是服务实现和测试实现。楼宇服务: BuildingServiceImpl_UT

    • 本文向大家介绍Java测试框架Mockito的简明教程,包括了Java测试框架Mockito的简明教程的使用技巧和注意事项,需要的朋友参考一下 什么是 Mock 测试 Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(M