簡體   English   中英

使用 Junit 但不用於測試?

[英]Use of Junit but not for testing?

我有一個帶有 Vaadin 的 Spring Boot 應用程序,我只需要簡單的 UI 元素驗證而無需支持 bean。例如,只需檢查文本字段值是否為空、空或不。

由於驗證器需要一個 bean,我正在考慮使用 Junit Assert 來完成這項簡單的工作。 因此,使用 Junit 不僅用於運行測試,還用於應用程序的主要流程。

這是一種好的做法嗎?還有哪些替代方法?

對於需要將 Vaadin 的轉換器或驗證器綁定到單個字段/值對而不涉及 Bean 的此類用例,我編寫了 FieldBinder實用程序類,它可以在 Vaadin 的目錄中找到並作為 maven 依賴項添加到您的項目中。

https://vaadin.com/directory/component/fieldbinder

        // Binder with integer
    FieldBinder<Integer> integerFieldBinder = new FieldBinder<>();
    TextField integerField = new TextField("Input number");

    // Text field with Integer value Converter and Validator
    // Demoing how to detect if value is valid and how to get it from FieldBinding
    FieldBinding<Integer> integerBinding = integerFieldBinder.forField(integerField)
            .withConverter(new StringToIntegerConverter("This is not a number"))
            .withValidator(new IntegerRangeValidator("Give a number between 5 and 10",5,10))
            .bind(integerValue);

這是好習慣嗎

我不認為junit是為了在生產代碼中使用

我只需要簡單的 UI 元素驗證而無需支持 bean。 有什么選擇

我相信您仍然可以使用綁定 API,只需忽略 getter/setter:

new Binder<>().forField(new TextField())
  .withValidator(...)
  .bind(o -> null, (o, o2) -> {});

雖然Binder需要一個“bean”,但它不必是完全抽出的東西。 您還可以bind兩個函數(一個ValueProvider和一個Setter )。 有了這個,你基本上可以使用任何你喜歡的容器作為“bean”。 例如MapAtomicInteger (你必須有辦法從中讀取一個值並寫回一個值)。

def tf = new TextField("Answer to all questions of the universe").tap {
    setWidthFull()
}

def binder = new Binder<Map>().tap{
    forField(tf)
        .asRequired("A value is mandatory")
        .withNullRepresentation("")
        .withConverter(new StringToIntegerConverter("Only numbers are allowed"))
        .withValidator(new IntegerRangeValidator("Must be 42", 42, 42))
        .bind( // XXX
            { m -> m.value },
            { m, v -> m.value = v }
        )

    setBean([:])
}

add(tf)
add(new Button("Save", {
    Notification.show(binder.valid ? "Saved ${binder.bean}" : "Please fix the errors first")
}))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM