パブリックメソッドが2つあり、メソッドが同じクラスの別のパブリックメソッドを呼び出すときにメソッドをテストする方法は何ですか?2つのパブリックメソッドが存在する場合、1つは別のメソッドを呼び出す場合に、単体テストを行う方法は?
このシナリオでユニットテストを作成するにはどうすればよいですか?
例
class SpecificIntMath {
public int add(int a,int b) {
return a+b;
}
public int multiply(int a, int b) {
int mul = 0;
for(int i = 0;i<b,i++) {
mul=add(a,mul);
}
return mul;
}
}
この例では、関係する方法が、概念の両方の複雑さを示していません。
add
とmultiply
を別々にテストする必要がありますか? multiply
のみをテストする必要がある場合は、multiple
がパラメータを提供できない場合があります。
multiply
とadd
を別々にテストするとすれば、私はadd
を模擬できるはずですか?そんなことがあるものか?
、multiply
とadd
を個別にテストすると、私はモックすべきでないと仮定すると、私はそれがあるとしてadd
が実行できます。この場合、プログラムの流れをどのように扱うべきですか?add
?
このような状況をテストする方法は何ですか。以下のコードで
、likedDeck()
のテスト中
class MCVC {
public boolean getWhereFrom(List<User> users) {
boolean allDone = true;
for(User user: users){
String url = user.getUrl();
switch(url) {
case Consts.GOOGLE:
someDao.updateFromAddr(user);
user.setEntry("Search Engine");
break;
case Consts.FACEBOOK:
someDao.updateFromAddr(user);
user.setEntry("Social Media");
break;
case Consts.HOME:
someDao.updateToAddr(user);
user.setEntry("Company");
default
user.setEntry(null);
allDone = false;
break;
}
}
return allDone;
}
public void likedDeck() {
List<Users> usersList = deckDao.getPotentialUsers(345L,HttpStatus.OK);
boolean flag = getWhereFrom(usersList);
if(flag) {
for(User user: usersList) {
//some Action
}
}
}
}
私はgetWhereFrom()
を検討すべきか、私は任意のデフォルトの状況を想定する必要があります。編集1
?デフォルトの状況を考えると、アウトプットがデフォルトではない場合には失われます。呼び出し中のクラスがテストされているので、私はそれを嘲笑すべきかどうかはわかりません。 Spying/Mocking class under test
別々にテストしてください。 'multiply'をテストするときに' add'をモックしようとしません。 'multiply'が' add'を呼び出すかどうか知りません(atleastはテストを書くときに知っているとは思わない)。 – john16384
また、b <0 –