【解決方法】以下のこの特定のメソッドの単体テストケースをどのように書くのですか?


private void setCountryCodeData() {
       //getting countryCode
       try {

           mCountryCode = PreferenceManager.getPrefIsoCode(LoginActivity.this);

           if (mCountryCode != null || !mCountryCode.equalsIgnoreCase("")) {
               for (CountryCodesResponse codesResponse : mCountryCodeResponse) {
                   if (codesResponse.getIso_code().equalsIgnoreCase(mCountryCode)) {
                       countrycode = codesResponse.getInternationalCallingCode();
                       countryflag = codesResponse.getImage();
                       isonumber = codesResponse.getIso_code();
                       countryname = codesResponse.getName();
                   }
               }
           } else if (getCountryCode() != null && !getCountryCode().equalsIgnoreCase("error")) {
               mCountryCode = getCountryCode();
               for (CountryCodesResponse codesResponse : mCountryCodeResponse) {
                   if (codesResponse.getIso_code().equalsIgnoreCase(mCountryCode)) {
                       countrycode = codesResponse.getInternationalCallingCode();
                       countryflag = codesResponse.getImage();
                       isonumber = codesResponse.getIso_code();
                       countryname = codesResponse.getName();
                   }
               }
           } else {
               countrycode = "+91";
               countryflag = "https://isprava-oi-development.s3.amazonaws.com/country/india/IN_3x.png";
               isonumber = "IN";
               countryname = getResources().getResourceName(R.string.india);
           }

           Glide.with(LoginActivity.this).asBitmap().load(countryflag).into(binding.tvFlagImage);

           binding.tvCountryCode.setText(countrycode);

       } catch (Exception ignored) {
           Log.e("country_code_error", "" + ignored);
           countrycode = "+91";
           countryflag = "https://isprava-oi-development.s3.amazonaws.com/country/india/IN_3x.png";
           isonumber = "IN";
           countryname = getResources().getResourceName(R.string.india);
           binding.tvCountryCode.setText(getResources().getString(R.string.india_country_code));
           binding.tvFlagImage.setImageResource(R.drawable.flag_india);
       }

       //pick mobile number from device
       requestHint();
   }

私が試したこと:

私はそれをmockitoとして使用してから値を返すことを試みましたが、これを行うとコードカバレッジを取得できません。 そして、このメソッドのテストケースを書く方法を本当に混乱させました。

解決策 1

これに対して適切な単体テストを書くことは本当にできません。 単体テストは、メソッドへの入力を制御し、その出力を評価します。 投稿したメソッドは直接入力を受け付けず、何も返しません。

コードを単体テストする場合は、コードの設計でそれを考慮する必要があります。 テスト可能なコードの記述について読み始める必要があります。 テスト可能なコード Java の書き方 – Google 検索[^]

コメント

タイトルとURLをコピーしました