この質問は以前に他の人から回答があったことは知っていますが、状況によって回答が異なるようです。
クラスをインスタンス化して、テストやモックなどを実行できるようにする必要があると多くの人が言っています。これが私のコードで、簡単に単体テストできるように見えます。
WebsiteLogin.java Website.java を拡張し、login() と呼ばれる void メソッドを含むインターフェースで、Username、Password、Url の 3 つの文字列を取ります。
AccountLogin.java Account を拡張するインターフェースであり、Username、Password、および Url の getter メソッドと、ブール値を取る setEnabled() メソッドが含まれています。
Login.java という別のクラスには、WebsiteLogin と AccountLogin を受け取るメソッド login() があります。このクラスにはメソッドが 1 つしかありません。
これがコードです
static void login(AccountLoginInformation account, LoginToWebsite website){
website.login(account.getUsername(), account.getPassord(), account.getUrl());
account.setEnabled(true);
}
そのため、ログインしてから、アカウントを有効に設定します。このメソッドは静的ですが、スタブ化された LoginToWebsite をメソッドに送信することで動作をテストできます。私はここで正しいですか?では、静的メソッドを使用しない理由は他にあるのでしょうか?
もう 1 つの質問は、Java 8 とインターフェイスのデフォルト メソッドを使用して、次のように Login.java というインターフェイスを作成できますか。
default void login(AccountLoginInformation account, LoginToWebsite website){
website.login(account.getUsername(), account.getPassord(), account.getUrl());
account.setEnabled(true);
}
次に、別のクラスで Login.java クラスを実装し、呼び出すだけです
login(account, website);
それとも、これは悪い習慣ですか?