2

エラーを出力し、エラーのある場所で停止しないようにするために、Junit テスト ケースで ErrorCollector を使用しています。パラメータなしのメソッドを使用して、ErrorCollector を試してみました。ただし、コードの重複を減らすために (パラメーターなしで同じメソッドを 6 回記述しました。コードで見られるように、比較に 6 つのファイルを使用しているため)、同じ目的を達成するために使用できる汎用メソッドが必要です。エラーを出力してチェックを続行します。パラメータを指定してメソッドを使用しようとすると、「メソッドにはパラメータがありません」という例外が発生しました..

以下は私のコードです。

            import org.gdal172.ogr.ogr;
            import org.hamcrest.CoreMatchers;
            import org.junit.Rule;
            import org.junit.Test;
            import org.junit.rules.ErrorCollector;
            import org.junit.runner.JUnitCore;
            import org.junit.runner.Result;
            import org.junit.runner.notification.Failure;

            public class DGNTester {
                private ReadDGN readDgn = new ReadDGN();
                private LinkedHashMap<String, Integer> layerMapCountForCompare = new LinkedHashMap<String, Integer>();
                @Rule
                public  ErrorCollector collector = new ErrorCollector();

                private File output = null;
                static {
                    // perform OGR format registration once
                    if (ogr.GetDriverCount() == 0)
                        ogr.RegisterAll();
                }

                /**
                 * @param args
                 */
                public static void main(String[] args) {

                    DGNTester dTest = new DGNTester();

                    String dgnFileName_43k10 = "input\\43k10.dgn";
                    String dgnFileName_43k11 = "input\\43k11.dgn";
                    String dgnFileName_43k12 = "input\\43k12.dgn";

                    //The six files iam using as input.

                    dTest.test(dgnFileName_43k10, "dvd");
                    dTest.test(dgnFileName_43k10, "all");
                    dTest.test(dgnFileName_43k11, "dvd");
                    dTest.test(dgnFileName_43k11, "all");
                    dTest.test(dgnFileName_43k12, "dvd");
                    dTest.test(dgnFileName_43k12, "all");

                }

                @Test
                public void test(String fileName, String inputType) {
                    System.out.println("FOR FILE -->" + fileName);
                    System.out
                            .println("---------------------------------------------------------------------------------------------------");
                    String fileIdentifier = fileName.substring(6, 11);
                    String dstFilePath = null;
                    String outputName = null;
                    if (layerMapCountForCompare != null)
                        layerMapCountForCompare.clear();

                    if (inputType.equals("dvd")) {
                        dstFilePath = "F:\\eclipse_helios_3.6.1_64_bit_with_jre_and_add-ons\\eclipse\\Resources\\DST\\dvd.dst";
                        outputName = "output\\outputfile_" + fileIdentifier
                                + "_dvd.dst.txt";
                    }
                    if (inputType.equals("all")) {
                        dstFilePath = "F:\\eclipse_helios_3.6.1_64_bit_with_jre_and_add-ons\\eclipse\\Resources\\DST\\AllLayers.dst";
                        outputName = "output\\outputfile_" + fileIdentifier + ".txt";
                    }
                    layerMapCountForCompare = readDgn.getLayerFeatureCount(fileName,
                            dstFilePath);

                    // Read the text output file and Compare with the map. These are the six out put files against each input file

                    output = new File(outputName);

                    if (output.exists()) {
                        try {
                            Set keys = layerMapCountForCompare.keySet();
                            Iterator itr = keys.iterator();
                            String key = "";
                            Integer val;

                            String line;
                            BufferedReader br = new BufferedReader(new FileReader(output));
                            while ((line = br.readLine()) != null && itr.hasNext()) {
                                key = (String) itr.next();
                                val = layerMapCountForCompare.get(key);
                                String compare = key + "=" + val;
                                compare.trim();
                                line.trim();
                                //When i print this out in a positive scenario; i am able to see the values of 'compare' and 'line' as same
                                /*System.out.println("COMPARE >>> " + compare
                                        + " --------------- AND --------- Line " + line);*/

                                assertEquals("Comparing input and output", line, compare);
                            }
                            br.close();

                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } else {
                        System.out.println("Output file does not exist");
                    }

                }

                public void assertEquals(String msg, Object expected, Object actual) {

                    collector.checkThat(actual, CoreMatchers.equalTo(expected));

                }

            }

前の例では; ここで、パラメーターを使用しませんでした。

    Result result = JUnitCore.runClasses(DGNTester.class);

    for (Failure failure : result.getFailures()) {
                System.out.println(failure.toString());
            }
            if (result.wasSuccessful()) {
                System.out.println("Tests finished successfully...");
            }

このコードは、テスト メソッドをトリガーし、適切なメソッドを出力するのに役立ちました。
ErrorCollector を利用するために 2 つのパラメーターを使用する汎用メソッドの使用方法を教えてください。

パラメータ付きのjunitテストメソッドにError Collectorを利用する方法

4

1 に答える 1