タグ付けされた質問 「unit-testing」

ユニットテストは、ソースコードの個々のユニットをテストして、それらが使用に適しているかどうかを判断する方法です。

5
Pythonユニットテストでメソッドが呼び出されたことを表明します
Pythonユニットテストに次のコードがあるとします。 aw = aps.Request("nv1") aw2 = aps.Request("nv2", aw) aw.Clear()テストの2行目で特定のメソッド(私の場合)が呼び出されたことを表明する簡単な方法はありますか?たとえば、次のようなものはありますか? #pseudocode: assertMethodIsCalled(aw.Clear, lambda: aps.Request("nv2", aw))


15
このビルドでは非推奨のGradle機能が使用されていたため、Gradle5.0との互換性がありません。
Gradleの失敗があります: ..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0." ケースの説明: 次のライブラリをプロジェクトコードベースに添付します。 APP / build.gradle //(Required) Writing and executing Unit Tests on the JUnit Platform testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0" // (Optional) If you need "Parameterized Tests" testImplementation "org.junit.jupiter:junit-jupiter-params:5.2.0" // (Optional) If you also have JUnit …



8
ActivatedRouteのパラメーターに依存するコンポーネントを単体テストするにはどうすればよいですか?
オブジェクトの編集に使用されるコンポーネントの単体テストを行っています。オブジェクトには、idサービスでホストされているオブジェクトの配列から特定のオブジェクトを取得するために使用される一意のオブジェクトがあります。特定のものidは、ルーティングを介して、特にActivatedRouteクラスを介して渡されるパラメーターを介して調達されます。 コンストラクターは次のとおりです。 constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) { } ngOnInit() { this._curRoute.params.subscribe(params => { this.userId = params['id']; this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0]; このコンポーネントで基本的な単体テストを実行したいと思います。ただし、idパラメータを挿入する方法がわからないため、コンポーネントにはこのパラメータが必要です。 ちなみに、私はすでにSessionサービスのモックを持っているので、心配はいりません。

11
できればセレンを使用して、ブラウザーでextjsコードをテストするための提案はありますか?
私たちはセレンを使用して、高レベルのWebサイトテスト(モジュールレベルでの広範なpython doctestに加えて)の処理に大きな成功を収めてきました。ただし、現在は多くのページにextjsを使用しており、グリッドなどの複雑なコンポーネントのSeleniumテストを組み込むのは困難です。 誰かがextjsベースのWebページの自動テストを書くことに成功しましたか?グーグルの多くは、同様の問題を持つ人を見つけますが、答えはほとんどありません。ありがとう!


7
読み取り専用プロパティをモックでモックする方法は?
読み取り専用プロパティをモックでどのようにモックしますか? 私は試した: setattr(obj.__class__, 'property_to_be_mocked', mock.Mock()) しかし、問題は、それがクラスのすべてのインスタンスに適用されることです...これは私のテストを破ります。 他に何かアイデアはありますか?オブジェクト全体をモックしたくはありません。この特定のプロパティだけをモックします。

4
AssertJ assertThatにカスタムメッセージを追加できますか?
主にHamcrestマッチャーでJUnitアサーションを使用するテストスイートがあります。私たちのチームの1人は、AssertJの実験を開始し、その構文、柔軟性、および宣言型性で人々に感銘を与えました。JUnitが提供する、AssertJに相当するものが見つからない機能が1つあります。それは、カスタムのアサート失敗メッセージを追加することです。 人間が読みやすいように作成されておらず、ランダムに見えるIDまたはUUIDを持つオブジェクトを比較することがよくあり、それらに含まれるデータによってそれらが何であるかを判断することは不可能です。悲しいことに、これはコードベースにとって避けられない状況です。コードベースが果たす目的の一部は、必ずしもそれが何であるかを理解せずに、他のサービス間でデータをマッピングすることです。 JUnitでは、assertThatメソッドはString reasonパラメーターの前にパラメーターを持つバージョンを提供しますMatcher<T>。これにより、人間にとっての比較の意味など、問題に光を当てる短いデバッグ文字列を追加するのは簡単です。 一方、AssertJは、何らかの形式のインターフェイスAssertまたはその多くの実装クラスの1つを返す無数の異なる汎用static assertThatメソッドを提供します。このインターフェースは、失敗に含まれるカスタムメッセージを設定する標準的な方法を提供しません。 メッセージを追加するすべてのアサーションタイプに対してカスタムアサーションクラスを作成せずに、AssertJ APIまたはその拡張機能の1つからこの機能を取得する方法はありますか?


16
酵素-<input>値にアクセスして設定する方法は?
を&lt;input&gt;使用するときに値にアクセスする方法について混乱していますmount。これが私のテストとして得たものです: it('cancels changes when user presses esc', done =&gt; { const wrapper = mount(&lt;EditableText defaultValue="Hello" /&gt;); const input = wrapper.find('input'); console.log(input.render().attr('value')); input.simulate('focus'); done(); }); コンソールが印刷されundefinedます。しかし、コードを少し変更すると、機能します。 it('cancels changes when user presses esc', done =&gt; { const wrapper = render(&lt;EditableText defaultValue="Hello" /&gt;); const input = wrapper.find('input'); console.log(input.val()); input.simulate('focus'); done(); }); もちろん、input.simulate私がrender今使っているので、回線が失敗することを除いて。正しく動作するには両方が必要です。これを修正するにはどうすればよいですか? 編集: …

9
大規模なRailsアプリケーションでのRSpecテストの高速化
私のRSpecテストには、2,000を超える例を含むRailsアプリケーションがあります。言うまでもなく、これは大規模なアプリケーションであり、テストする必要があることがたくさんあります。この時点でこれらのテストを実行することは非常に非効率的であり、非常に時間がかかるため、新しいビルドをプッシュする前にテストを作成することはほとんどお勧めできません。spec.optsに--profileを追加して、実行時間が最も長いサンプルを見つけました。実行に平均10秒かかるサンプルが少なくとも10個あります。あなたのRSpecエキスパートの間でそれは正常ですか?一例として、10秒は完全に長すぎますか?2,000の例を使用すると、すべてを完全にテストするにはかなりの時間がかかることがわかりますが、現時点では4時間は少し馬鹿げています。 最長の実行例については、どのようなときに見ていますか?ボトルネックを特定してスピードアップを図るために、既存の仕様をトラブルシューティングするにはどうすればよいですか。この時点では、毎分本当に役に立ちます。

4
RSpec:letブロックとbeforeブロックの違いは何ですか?
違いは何であるletとbeforeRSpecの中のブロックは? そして、それぞれをいつ使うのですか? 以下の例で良い方法は何ですか(以前に) let(:user) { User.make !} let(:account) {user.account.make!} before(:each) do @user = User.make! @account = @user.account.make! end 私はこのスタックオーバーフローの投稿を勉強しました しかし、上記のようなアソシエーション関連のletを定義するのは良いことでしょうか?

16
@BeforeClassと継承-実行順序
単体テスト(TestNG 5.10)のベースとして使用する抽象基本クラスがあります。このクラスでは、テスト用の環境全体を初期化したり、データベースマッピングを設定したりしています。この抽象クラス@BeforeClassには、初期化を行う注釈付きのメソッドがあります。 次に、そのクラスを、@Testメソッドとメソッドを持つ特定のクラスで拡張し@BeforeClassます。これらのメソッドは、環境のクラス固有の初期化を行います(たとえば、いくつかのレコードをデータベースに入れます)。 @BeforeClassアノテーション付きメソッドの特定の順序を強制するにはどうすればよいですか?抽象基本クラスからのものを拡張クラスの前に実行する必要があります。 例: abstract class A { @BeforeClass doInitialization() {...} } class B extends A { @BeforeClass doSpecificInitialization() {...} @Test doTests() {...} } 予想される注文: A.doInitialization B.doSpecificInitialization B.doTests 実際の注文: B.doSpecificInitialization // &lt;- crashes, as the base init is missing (A.doInitialization // &lt;---not executed B.doTests) // &lt;-/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.