相关疑难解决方法(0)

如何对抽象类进行单元测试:使用存根扩展?

我想知道如何对抽象类进行单元测试,以及扩展抽象类的类.

我应该通过扩展它来测试抽象类,删除抽象方法,然后测试所有具体方法吗?然后只测试我覆盖的方法,并在单元测试中测试扩展我的抽象类的对象的抽象方法?

我是否应该有一个抽象的测试用例,可以用来测试抽象类的方法,并在我的测试用例中为扩展抽象类的对象扩展这个类?

请注意,我的抽象类有一些具体的方法.

java testing abstract-class unit-testing

429
推荐指数
6
解决办法
14万
查看次数

使用Mockito测试抽象类

我想测试一个抽象类.当然,我可以手动编写一个继承自该类的模拟.

我可以使用模拟框架(我使用的是Mockito)而不是手工制作我的模拟吗?怎么样?

java abstract-class unit-testing mocking mockito

202
推荐指数
8
解决办法
15万
查看次数

调用抽象类的私有方法

我有一个要求,我必须调用抽象类的私有方法.

假设抽象类如下所示: -

public abstract class Base {

    protected abstract String getName();

    private String getHi(String v) {
        return "Hi " + v;
    }
}
Run Code Online (Sandbox Code Playgroud)

有些人可以告诉我有没有办法可以打电话getHi(可能是通过Reflection或其他方式),以便我可以测试出来?我正在使用Junit 4.12Java 8

我已经解决了这个问题,但这里的方法在抽象类中并不是私有的.

我也经历过这个问题,即使这个问题也没有谈到抽象类中的私有方法.

我不是在这里问我们是否应该测试私有方法或者测试私有方法的最佳策略是什么.网上有很多关于此的资源.我只是想问一下如何在java中调用抽象类的私有方法.

java junit junit4

6
推荐指数
1
解决办法
1472
查看次数

当实现仅在单个方法中有所不同时,建议使用哪种设计模式?

我有一个界面,有6种方法用于管理数据集.实现之间唯一不同的方法getSerializedVersion()是能够解析序列化字符串的构造函数.

public interface DataSets {
  public void addEntry(...);
  public void  removeEntry(...);
  public void manipulateEntry(...);
  public SomeType getEntry(...);
  public List<SomeType> getAllEntries();
  // This differs:
  public String getSerializedVersion()
}
Run Code Online (Sandbox Code Playgroud)

我无法改变界面.

我的第一个想法是生成一个抽象类并实现前五个方法.对于具体实现(例如DataSetsXML,DataSetsYAML...),我只需要实现getSerializedVersion()和能够读取String并初始化对象的构造函数.

为了使它更易于测试,不同的设计可能会更好(/sf/answers/529870701/),但哪一个?

答案可能是主观的,但我认为有一些一般规则或不同方法的最小(客观)优点和缺点,......

java oop inheritance abstract-class design-patterns

4
推荐指数
1
解决办法
93
查看次数