使用方法依赖测试 util 类

古斯塔沃·帕切科

我有一个实用程序类,我需要进行一些单元测试,但是在这个实用程序类中,我的方法依赖于同一个实用程序类中的其他方法。

为此,我使用以下依赖项:

  • j单位:4.12
  • Mockito:2.8
  • 动力模拟:1.7

很明显,我正在使用 Java 来执行我的代码。

现在转到示例代码:

public final class AppUtils {

    private AppUtils () {
        throw new UnsupportedOperationException("This class is not instantiable.");
    }

    public static int plus(int a, int b) {
        return a + b;
    }

    public static float average(int a, int b) {
        return ((float) AppUtils.plus(a, b)) / 2;
    }
}

和单元测试:

@RunWith(PowerMockRunner.class)
@PrepareForTest({AppUtils.class})
public class AppUtilsTest {

    @Test
    public void testPlus() { //This test must be good.
        assertEquals(6, AppUtils.plus(4, 2));
    }

    @Test
    public void testAverage() {
        PowerMockito.mockStatic(AppUtils.classs);
        when(AppUtils.plus(anyInt())).thenReturn(6);
        assertEquals(3f, AppUtils.average(4, 3), 1e-2d);
    }

}

那样我做了我的单元测试,但这会给我一个错误,因为它告诉我预期的结果与实际的结果不符。

expected: 3.000f
actual: 0

这是因为PowerMock使用该mockStatic()方法会替换您定义的所有静态实现,但是如果您没有定义一个静态方法的结果,则它返回 0。

如果有人可以帮助我,我感谢你。

蒂莫西·特拉克尔

UnitTests 验证被测代码的公共可观察行为。

CUT 的公共可观察行为包括返回值和与其依赖项的通信。

这意味着您将其他方法视为private,只需查看调用的方法的结果。


顺便提一句:

没有这样的规则,即“实用程序类”(在它们提供基本或通用功能的意义上)必须只有静态方法。这只是一种常见的误解,这是由仅使用静态方法命名类的习惯驱动的“实用程序类”。

将所有实用程序方法设为非静态并在使用之前实例化该类是绝对可以的

依赖注入(并且不是 Singelton模式 )将帮助你只有一个实例中使用的所有在你的程序...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java 8:使用静态方法而非静态util类进行接口

来自分类Dev

如何扩展java.util.Scanner类以添加nextChar()方法?

来自分类Dev

放入util类的适当方法?

来自分类Dev

我应该避免在Spring util包中使用类吗?

来自分类Dev

使用Logger和Java.util的FileHandler类在几秒钟后日志文件未更新

来自分类Dev

使用方法创建超类

来自分类Dev

如何使用Jackson序列化基于java.util.Map的类

来自分类Dev

util类中具有静态方法的Mockito

来自分类Dev

是否有任何util类/方法采用大String并返回InputStream?

来自分类Dev

对空类使用方法

来自分类Dev

com.firebase.client.FirebaseException:无法使用类java.util.Date android解析节点

来自分类Dev

为什么我不能使用java.util.Date类中的getTime()测量经过的时间?

来自分类Dev

找不到用于内省工厂方法的类文件:java.util.concurrent.ThreadPoolExecutor.DiscardPolicy

来自分类Dev

使类成为util的最佳方法?

来自分类Dev

在不使用Util类的情况下从数组中删除重复项

来自分类Dev

如何扩展java.util.Scanner类以添加nextChar()方法?

来自分类Dev

使用方法创建超类

来自分类Dev

util类中具有静态方法的Mockito

来自分类Dev

util类的复制方法不起作用

来自分类Dev

如何使用在方法中具有依赖项的moq来对类进行单元测试?

来自分类Dev

没有与类java.util.Arrays $ ArrayList的层次结构中的名称流匹配的方法

来自分类Dev

Python创建类和使用方法

来自分类Dev

在类'org.apache.log.Logger'中找不到方法信息(java.util.HashMap)

来自分类Dev

在 Java 中不使用 java.util.Date 类验证字符串日期

来自分类Dev

编写 Util 类的最佳方式

来自分类Dev

如何使用依赖注入测试类

来自分类Dev

如何测试使用类方法的类方法

来自分类Dev

Xpages - 在 java 类“java.util.AbstractList$SimpleListIterator”上调用方法“next()”时出错

来自分类Dev

使用 Flutter firebase-notifications 时无法初始化类 sun.util.calendar.ZoneInfoFile

Related 相关文章

  1. 1

    Java 8:使用静态方法而非静态util类进行接口

  2. 2

    如何扩展java.util.Scanner类以添加nextChar()方法?

  3. 3

    放入util类的适当方法?

  4. 4

    我应该避免在Spring util包中使用类吗?

  5. 5

    使用Logger和Java.util的FileHandler类在几秒钟后日志文件未更新

  6. 6

    使用方法创建超类

  7. 7

    如何使用Jackson序列化基于java.util.Map的类

  8. 8

    util类中具有静态方法的Mockito

  9. 9

    是否有任何util类/方法采用大String并返回InputStream?

  10. 10

    对空类使用方法

  11. 11

    com.firebase.client.FirebaseException:无法使用类java.util.Date android解析节点

  12. 12

    为什么我不能使用java.util.Date类中的getTime()测量经过的时间?

  13. 13

    找不到用于内省工厂方法的类文件:java.util.concurrent.ThreadPoolExecutor.DiscardPolicy

  14. 14

    使类成为util的最佳方法?

  15. 15

    在不使用Util类的情况下从数组中删除重复项

  16. 16

    如何扩展java.util.Scanner类以添加nextChar()方法?

  17. 17

    使用方法创建超类

  18. 18

    util类中具有静态方法的Mockito

  19. 19

    util类的复制方法不起作用

  20. 20

    如何使用在方法中具有依赖项的moq来对类进行单元测试?

  21. 21

    没有与类java.util.Arrays $ ArrayList的层次结构中的名称流匹配的方法

  22. 22

    Python创建类和使用方法

  23. 23

    在类'org.apache.log.Logger'中找不到方法信息(java.util.HashMap)

  24. 24

    在 Java 中不使用 java.util.Date 类验证字符串日期

  25. 25

    编写 Util 类的最佳方式

  26. 26

    如何使用依赖注入测试类

  27. 27

    如何测试使用类方法的类方法

  28. 28

    Xpages - 在 java 类“java.util.AbstractList$SimpleListIterator”上调用方法“next()”时出错

  29. 29

    使用 Flutter firebase-notifications 时无法初始化类 sun.util.calendar.ZoneInfoFile

热门标签

归档