0

JSFページからの入力をテストするために使用するこの単純なJavaメソッドがあります。

public void validateDC(FacesContext context, UIComponent component, Object value) throws ValidatorException, SQLException
    {

        Double d;
        String s = value.toString().trim();

        if (s.length() > 10)
        {
                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "  Value is too long! (18 digits max)", null));
        }

        try
        {
            d = Double.parseDouble(s);
            if (d < 0)
            {
                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "  '" + d + "' must be positive number!", null));
            }
        }
        catch(NumberFormatException nfe) { d = null; }


        if (d != null)
        {


        }
        else
        {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        s.isEmpty() ? "  This field cannot be empty!" : "  '" + s + "' is not a number!", null));
        }

    }

このバリデーターのJUnitテストを作成する方法に興味がありますか?単純に呼び出して引数を渡すことができますが、戻り値はありません。可能な解決策は何ですか?

4

2 に答える 2

2

JUnit4 を使用している場合は、これを使用できます。

@Test(expected=ValidatorException.class)
public void testValidatorException() {
 //call to trigger the exception   
 validateDC(...);
}
于 2013-01-21T15:54:57.387 に答える
1

メソッドをテストする方法について簡単なアイデアを提供するために、私が書いたいくつかのサンプルを次に示します。

@Test(expected = ValidatorException.class)
  public void shouldThrowExceptionWhenValueLengthIsGreaterThan10() throws Exception {
    Validaor validaor = new Validator();

    FacesContext context;
    UIComponent component;
    Object value;// <-- I don't know what value exactly is. But you have to create one with length less than 10  of its toString() value
    validaor.validateDC(context,component,value);

  }




  @Test
  public void shouldNotThrowExceptionWhenValueLengthIsLessThan10() throws Exception {
    Validaor validaor = new Validator();

    FacesContext context;
    UIComponent component;
    Object value;// create object with length more than 10 chars to of its toString() value
    validaor.validateDC(context,component,value);

  } 

これがお役に立てば幸いです。

于 2013-01-21T16:07:39.630 に答える