簡體   English   中英

如何對構造函數 Spring Boot 調用的方法進行單元測試

[英]How to unit test a method called by constructor Spring Boot

我想知道如何在下面的代碼中對 register() 方法進行單元測試

@Component
@Slf4j
public class Abc {
    private Xyz xyz;

    @Autowired
    public Abc(Xyz xyz) {

        this.xyz = xyz;
        try {
            register();
        } catch (Exception e) {
            log.warn("Unsupported");
        }
    }

    private void doSomething(String ts) {
       //do Something
    }

    private void register() {
        //register something
    }
}

如何在 spring 引導應用程序中對該方法進行單元測試。 當我嘗試一些單元測試時,甚至在測試方法執行之前調用構造函數

您不能通過檢查使用 class Abc 創建的 object 的 state 進行測試嗎?

這比檢查私有方法的調用更可取,因為這樣您就可以重構 class 的內部工作,而無需更改測試,只要行為和外部 state 相同。

如果您發現自己想要檢查是否在單元測試中調用了私有方法,那么這是一種氣味,我認為應該重新考慮您的方法。 其他一些問題已經涵蓋了類似的領域。

如果這些方法正在與某些外部組件交互,那么您可以像通常使用任何方法一樣模擬這些組件,然后驗證交互是否符合您的預期。 這種交互是否發生在一種方法或另一種內部應該是 Abc class 的實現細節,而在外部你不應該關心。

暫無
暫無

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

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