タグ付けされた質問 「testng」

12
JUnitとTestNG [終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 10か月前に閉鎖。 この質問を改善する 職場では、現在もJUnit 3を使用してテストを実行しています。新しいテストを作成するためにJUnit 4への切り替えを検討してきましたが、しばらくの間、TestNGに注目しています。JUnit 4またはTestNGのいずれかで、どのような経験をしましたか。これは、非常に多数のテストでうまく機能するようです。私たちの機能テストは幅広い側面をカバーしており、結果を得るにはさまざまな方法で記述する必要があるため、テストの記述に柔軟性を持たせることも重要です。 古いテストはうまく機能するため、書き直されることはありません。新しいテストで私が見たいのは、テストの記述方法の柔軟性、自然なアサーション、グループ化、簡単に配布できるテストの実行です。
125 java  testing  junit  testng 

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 // <- crashes, as the base init is missing (A.doInitialization // <---not executed B.doTests) // <-/

6
JUnit 4とTestNG-2013-2014の更新[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前に閉鎖。 この質問を改善する JUnit 4とTestNGは比較可能でした。2つのテストフレームワークの長所と短所は何ですか?

3
Mockitoはローカルで最終クラスをモックしますが、ジェンキンスで失敗します
静的メソッドのユニットテストをいくつか作成しました。staticメソッドは引数を1つだけ取ります。引数の型は最終クラスです。コードに関して: public class Utility { public static Optional<String> getName(Customer customer) { // method's body. } } public final class Customer { // class definition } そのため、UtilityクラスUtilityTestsについて、このメソッドのテストを記述したテストクラスを作成しましたgetName。ユニットテストフレームワークはTestNGであり、使用されるモックライブラリはMockitoです。したがって、一般的なテストの構造は次のとおりです。 public class UtilityTests { @Test public void getNameTest() { // Arrange Customer customerMock = Mockito.mock(Customer.class); Mockito.when(...).thenReturn(...); // Act Optional<String> name = Utility.getName(customerMock); // Assert …

1
TestNGの@Testだけでなく、完全なクラスを再実行する
私は数日間、stackoverflowを閲覧しており、@Testステップだけでなく、テストクラス全体を再実行する方法を見つけようとしました。TestNGとIRetryAnalyzerではこれはサポートされていないと多くの人が言いますが、実際には機能しない回避策を投稿している人もいます。誰かがなんとかやっていますか?そして、その理由を明確にするために、意図的にサポートされていないという回答を避けるために:TestNGは、開発者だけのツールではありません。e2eテストのためにswテスターからも使用されることを意味します。E2eテストには、前のテストとは異なるステップを含めることができます。つまり、単純な@Testではなく、テストクラス全体を再実行することが有効ですIRetryAnalyzer。これは、を介して簡単に実行できます。 私が達成したいことの例は次のようになります: public class DemoTest extends TestBase { @Test(alwaysRun = true, description = "Do this") public void testStep_1() { driver.navigate().to("http://www.stackoverflow.com"); Assert.assertEquals(driver.getCurrentUrl().contains("stackoverflow)")); } @Test(alwaysRun = true, dependsOnMethods = "testStep_1", description = "Do that") public void testStep_2() { driver.press("button"); Assert.assertEquals(true, driver.elementIsVisible("button")); } @Test(alwaysRun = true, dependsOnMethods = "testStep_2", description = "Do something …

2
Java-ユニットテスト中にリソースファイルパスをテストファイルにスワップする方法
いくつかの設定を持つリソースファイルがあります。このファイルから設定をロードするResourceLoaderクラスがあります。このクラスは現在、熱心にインスタンス化されたシングルトンクラスです。このクラスがロードされるとすぐに、ファイル(別のクラスの定数フィールドとして保存されているファイルパス)から設定を読み取ります。これらの設定の一部は、単体テストには適していません。たとえば、このファイルにはスレッドのスリープ時間があり、これは製品コードでは数時間になる場合がありますが、単体テストでは数ミリ秒にしたいと考えています。そのため、値のセットが異なる別のテストリソースファイルがあります。私の質問は、単体テスト中にメインのリソースファイルをこのテストファイルと交換するにはどうすればよいですか?プロジェクトはMavenプロジェクトであり、テストフレームワークとしてtestngを使用しています。これらは私のアプローチの一部です @BeforeSuiteを使用してFilePath定数変数を変更し、テストファイルを指すようにし、@ AfterSuiteを使用して元のファイルを指すようにします。これは機能しているようですが、ResourceLoaderクラスは熱心にインスタンス化されているため、ResourceLoaderクラスがロードされる前に@BeforeSuiteメソッドが常に実行される保証はなく、ファイルパスが変更される前に古いプロパティがロードされる可能性があります。ほとんどのコンパイラーは、必要な場合にのみクラスをロードしますが、これがJava仕様の要件であるかどうかはわかりません。したがって、理論的には、これはすべてのJavaコンパイラで機能するとは限りません。 リソースファイルのパスをコマンドライン引数として渡します。pomのsurefire構成でコマンドライン引数としてテストリソースファイルパスを追加できます。これは少し過剰に見えます。 1.のアプローチを使用して、ResourceLoaderを遅延インスタンス化します。これにより、ResourceLoader.getInstance()。getProperty(..)への最初の呼び出しの前に@BeforeMethodが呼び出された場合、ResourceLoaderが正しいファイルをロードすることが保証されます。これは最初の2つのアプローチよりも優れているようですが、シングルトンクラスを遅延インスタンス化すると、列挙型などの単純なパターンを使用できないため、醜くなります(熱心なインスタンス化の場合のように)。 これは一般的なシナリオのようですが、最も一般的な方法は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.