2011-11-13 24 views
0

CurrencyCodeがISO 4217ではない場合、SDKのドキュメントでCurrency.getInstance(String currencyCode)がIllegalArgumentExceptionをトリガーするはずですが、ユーザーが事前入力されていない通貨を入力する場合にこれを通貨コードバリデータとして使用しようとしましたスピナー。Androidでは、通貨コードの有効性を確認するにはどうすればよいですか?

私のテストでは、例外はトリガされません、それはシンボルとして渡される文字列で通貨のインスタンスを返します。

Androidで通貨コードを検証する方法はありますか?

String currency = mCustomCurrency.getText().toString().trim().toUpperCase(); 
try { 
    Currency.getInstance(currency); 
} catch (IllegalArgumentException e) { 
    if (errMsg.length() > 0) 
     errMsg.append("\n"); 
    errMsg.append(getString(R.string.bad_format_for_currency)); 
    res = false; 
} 
+0

テストを投稿すると、正しいことをしていない可能性がありますか? – C0deAttack

+1

私は確かにISOではない "xieeuuii"のような奇妙な文字列を置いた4217 –

+0

ええ私はそれを考え出したが、あなたのテストでは例外がスローされないと言うので、テストが合格しなかった場合。 – C0deAttack

答えて

1

私はこれを書いて、うまく動作します(失敗します)。

import java.util.Currency; 

import junit.framework.TestCase; 

public class CurrencyTest extends TestCase { 

    public void test_ExpectExceptionWithInvalidCurrencyCode() { 
     try { 
      Currency curr = Currency.getInstance("BLABLABLA"); 
      fail("Expected IllegalArgumentException"); 
     } catch (IllegalArgumentException e) { 
      System.out.println("Exception thrown, as expected."); 
     } 
    } 

} 

resで何をしていますか?

+0

Android envでテストしていますか? –

+0

これは、Android JUnitテストランチャーを使用しているAndroidプロジェクトにあります。アクティビティやUIに関連していないため、InstrumentationTestRunnerを使用して実行されることはありません。それは単なる単体テストなので、違いはありません。 – C0deAttack

+0

実際、ブレークポイントではcatch節には入力しません –

関連する問題