0

私はユニットテストとモキットを初めて使用しますが、このクラスをテストする必要があります:

public class XMLHandler {
    private static final String CONFIG_FILE = "path/to/xml";
    private XMLConfiguration config = null;

    public XMLHandler() {
        try {
            config = new XMLConfiguration(CONFIG_FILE);
            config.setValidating(true);
        } catch (ConfigurationException e) {
            LOGGER.log(Level.SEVERE, e );
        }
    }

    public List<ConfigENtries> getEntries() {     
        // do some stuff
        return list;
    }

    @Override
    public void removeEntry(int index) {
        // remove entry
    }
}

モックアップで構成変数をオーバーライドする必要があると思いますが、セッターがないので、どうすればよいですか? そしてremoveEntryはどうですか?void メソッドをテストするには?

誰かがこれで私を助けてくれることを願っています

4

2 に答える 2

1

クラスを変更することが許可されているため、次の構造をお勧めします。

public class XMLHandler {
  private final XMLConfiguration config;

  public XMLHandler(XMLConfiguration config) {
    this.config = config;
  }

  public List<ConfigENtries> getEntries() {     
    // do some stuff
    return list;
  }

  @Override
  public void removeEntry(int index) {
    // remove entry
  }
}

具体的な実装ではなく、XMLConfigurationインターフェースあることを確認してください。config次に、コンストラクターに渡されたパラメーターをモックできます。(注: 非 final 具象クラスもモックできますが、インターフェイスを使用することをお勧めします。)

その後、 のパブリック メソッドをテストし、XMLHandler行われた呼び出しを検査configしてメソッドの応答が正しいことをアサートすることで、正しい動作を確認できます。

void メソッドは問題なくテストできます。オブジェクトと世界の状態が調整され、修正されたことを判断する何らかの方法が必要なだけです。したがって、テストの最後に getter メソッドを呼び出して、値が変更されたことを確認する必要があるかもしれません。または、想定される呼び出しがモック オブジェクトに対して行われたことを確認します。

于 2013-05-03T09:08:38.783 に答える
0

@DuncanJones が示唆するように、コンストラクターを変更して XMLConfiguration を渡すことも好みますが (または、他の種類の依存性注入を使用します)、mockito を使用して、テストで注釈XMLConfigurationを使用してモックすることもできます。@InjectMocks

@RunWith(MockitoJUnitRunner.class)
public class XMLHandlerTest {

    @InjectMocks
    XMLHandler handler = new XMLHandler();

    @Mock
    XMLConfiguration config;

    //...
于 2013-05-03T09:18:19.500 に答える