問題タブ [final-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 基本クラスから最終クラスのコンストラクターを呼び出す
次のような例外クラスがあります。
私はちょうど追加しました:
...他にもいろいろあったので...
...次のように整理されています。
ただし、次の場合もあります。
...そして、同等のラッピングを実行する方法がわかりません。
つまり、次のように書きます。
TypeError : Exception と Exception::wrap が public であるため、wrap のオプションの 2 番目のパラメーターを作成するだけです。
...しかし、::wrap がヒットした最終クラスのコンストラクターを呼び出すにはどうすればよいでしょうか?
swift - Swift で最終クラスを拡張できますか?
Swift を使用して作成している新しいアプリにサードパーティのライブラリを使用しています。final
クラス/ライブラリの作成者は、おそらくそのプロパティとメソッドを最適化し、オーバーライドするのを防ぐために、キーワードを使用して最終的なものにしました。
例:
クラスを拡張し、デフォルトをオーバーライドせずにいくつかの新しいプロパティとメソッドを追加することは可能ですか?
そのようです:
unit-testing - 最終クラスをモックし、それを自動配線されたデータメンバーに注入し、postConstruct メソッド呼び出しを克服します
自動配線された最終クラス オブジェクトと、@PostConstruct メソッドを持つ別の自動配線されたクラスを使用して、Java クラスを単体テストしたいと考えています。それらを個別にテストすることは可能ですが、それらを組み合わせることはできません。
この質問は、mockito モックを spring Bean に注入することに関する質問の拡張です
テストするコード
ワーキングテストクラス
上記のコードは、ファイル内のセッターの必要性に対応しています
期待されるテストクラス
上記のスニペットは finalClass をモックしますが、ResourceVerifier.class の @PostConstructor を呼び出します - この呼び出しを克服するには、ここで何をする必要があります。
調査
- @InjectMocksを使用して、Springコンテキスト構成を必要とせずに自動配線されたファイルをテストすることができます。
- @InjectMockは static および final フィールドに対してサイレントに失敗し、失敗すると他のモックも注入されません。
- PowerMockの createMockを使用して最終クラスをモックし、 PowerMockRunnerおよび@PrepareForTestを使用してテストを実行することができます。ただし、これには@Autowiredフィールドのモックを挿入するための新しい不要なセッターが必要です。
- MockitoAnnotations.@Mockは PowerMock とうまく連携できず (特に最終クラス オブジェクトをモックする場合)、EasyMock.Annotations.@Mockで解決できます。
- EasyMockとPowerMockには、Mockito によって可能な限りモックを注入するための@InjectMocksアノテーションがありません(問題を数秒で解決できたはずです)。
- SpringJUnit4Runnerと別の単体テスト@ContextConfigurationを介して自動配線された Spring Bean を注入することが可能です。
- PowerMockRunnerとPowerMockRunnerDelegateを使用したSpringJUnit4Runnerの両方で同じテスト ファイルを実行することが可能です。
- @PostConstructメソッドは、Spring Bean の作成と注入を使用するよりもコードでモックされた場合、自動的に実行されないことを知っています。
- ラッパー ファクトリ Bean クラスが作成され、モックの作成に使用される場合、自動的に挿入されますが、それと共に @PostConstruct メソッドも呼び出されます。
- Springockito は現時点では信頼できないため、これに依存することはできません。
しかし、ユースケースはこれらすべての組み合わせであるため、これらのどれも機能しませんでした。
可能な解決策
- @Autowiredフィールドを削除し、 Setter インジェクションを使用して、PowerMock を使用して通常どおりモックすることで可能にします (動作確認済み) - しかし、これは外部チーム パッケージが従う規則です - 私はそれに固執するために最善を尽くす必要があります。
- または @Autowired をセッターまたはコンストラクターに設定します
代替案?
クラスは目的を果たし、適切に設計されているため、クラスを再編成する必要はないと思います。
- テスト中のクラスを操作する必要のないその他の手段 - このクラスを変更する権限がない場合はどうなりますか? つまり、純粋なテスト ライブラリ依存ソリューションです。
- PowerMockitoで可能かどうかわかりませんか? PowerMockito と PowerMockの組み合わせは試していません。
c++ - C++ のマルチレベル仮想継承での保護されたコンストラクター
次のコードはどのように機能していますか? MakeFinal コンストラクターは保護されているため、FinalUser クラスからアクセスできないようにする必要があります。しかし、ビルドまたは実行エラーは発生しませんでした。
java - プライベートコンストラクターを使用した最終クラス、設計原則は何ですか
私は最近、 Netflix オープンソース プロジェクトの 1 つを経験していました。
そこで、最終クラスとプライベートコンストラクターの両方の使用を見つけました。私はそれを十分に認識しています
- final は継承を避けることです
- private は、インスタンス化を許可しないことです
しかし、なぜ両方が一緒に使用されているのか知りたいだけです。メソッドは静的ですが、インスタンス化せずに使用できますが、その背後にある設計原理を知りたいと思っています。
java - powermockito を使用してクラスをモックしている場合でも、「Mockito はこのクラスをモックできません」というエラーが表示されます
私は最終クラスを持っています
テスト対象のクラスはクラス B です。このクラスは最終クラス A の静的メソッドを呼び出しています。
クラスCは再び最終クラスです
私はこの最終的なクラスAをこのように嘲笑しています
クラス C の methodD 内でケースが失敗しています。
このエラーが発生しています。Mockito はこのクラスをモックできません: A.