質問: new ArrayList<>(); @BeforeClass public static void setup() throws Exception { セットアップ用のクラスからセットアップのメソッド実行 contextsにChromeとFireFoxのドライバをadd } @AfterClass public static void quit() throws Exception { ドライバのquit } @Test public void case1() { contexts.forEach(it -> { new シナリオのクラス().シナリオのメソッド(it); }); contexts.forEach(it -> { new シナリオのクラス().シナリオのメソッド(it); }); } @Ignore("unexecuted") @Test public void case1() { contexts.forEach(it -> { new シナリオのクラス().シナリオのメソッド(it); }); contexts.forEach(it -> { new シナリオのクラス().シナリオのメソッド(it); }); } } ``` きれいではないと思うのですが、実行したくないテストケースについて@Ignoreで明示的に行わないようにしています。JUnitの本来の使い方としては、`src/main/java`内のモジュールを切り出してテストするような用途だとは思っているのですが、書いているうちに混乱してきてしまっていて、ご助言を賜りたい次第です。情報不足でしたら、ご指摘ください。 --- [再追記] argiusさんよりご回答いただいて1ヶ月超過しているので、根治/再実装はしておりませんが該当プロジェクトの修正の方向性をまとめます。 1. テスト内に書いているシナリオや起動クラスはメインに移動する。 2. @Ignoreで無視している部分は、起動時のオプションなどで走らせるシナリオのメソッドを変える等で解決する 現在はjarに固めずIDEから直接テストを起動するやり方で運用しておりとても楽ですが、構成を見直し適したものにしたいと思います。
回答: 追記ありがとうございます。 `src/main/java`のようなMavenスタイルのディレクトリー構成は、Maven,Gradle,sbtなどのビルドツールのためのものなので、その恩恵を受けられるようにするにはそれなりの構成にするのが望ましいです。 `src/test/java`の下にあるコードは、テスト用のコードなので、今この > > WEBサイトへアクセス・画面操作・画面キャプチャ/画面ソース保存等を自動で行う > > > という機能がプロダクトとして実装されたものであれば、これをパッケージングを行う機能を使ってパッケージを作ったり、それをデプロイすることができなくなります。 つまりJarファイルにしてそれを動かすというのは基本的にはできないものとなります。 JUnitライブラリーの依存関係をtest限定にしなければ、それを回避できますが、あまり一般的なやりかたではないですね。 あくまでJUnitはテストのためのライブラリーなので、それ以外の用途は想定していないからです。 任意のメソッドを実行したいのでしたら、JUnitでやっているようなことを自前でリフレクションなどを用いて実装するほうが良いでしょうね。 常にソース付きで使い、ビルドツールの`test`コマンドで実行する前提なら、これでもかまわないとは思います。