Подсчет количества строк в тестовых классах

Я разрабатываю инструмент, который распознает тестовые классы и подсчитывает количество строк в этих классах. Инструмент также посчитает строки бизнес-кода и сравнит оба результата, вот мой код:

    for (File f : list) {
        if (f.isDirectory()) {
            walk(f.getAbsolutePath());
        }

        if (f.getName().endsWith(".java")) {

            System.out.println("File:" + f.getName());
            countFiles++;

            Scanner testScanner = new Scanner(f);
            while (testScanner.hasNextLine()) {

                String test = testScanner.nextLine();
                if (test.contains("org.junit") || test.contains("org.mockito")) {
                    System.out.println("this is a test class");
                    testCounter++;

                    break;
                }
            }
            Scanner sc2 = new Scanner(f);

            while (sc2.hasNextLine()) {

                count++;

Подсчет бизнес-кода с использованием (count++) работает отлично, но подсчет количества кода в тестовых классах не работает, используя (testCounter++), который возвращает количество тестовых классов, а не количество строк в этих классах! А что я могу сделать?

Спасибо

2 ответа

Решение

Предполагая, что вы хотите посчитать количество строк, которые содержат либо org.junit or org.mockito

тогда вы хотите сделать

       while (testScanner.hasNextLine()) {

            String test = testScanner.nextLine();
            if (test.contains("org.junit") || test.contains("org.mockito")) 
            {
                hasTestLines = true;
            }
            count++;
        }

        if (hasTestLines) {
             System.out.println(String.format ("there were %d lines in file %s which also had org.junit||org.mockito", 
                                    count, f.getName());
        }
        else {
             System.out.println(String.format ("there were %d lines in file %s which did NOT have org.junit||org.mockito", 
                                    count, f.getName());
       }

Вы увеличиваете testCounter только тогда, когда сталкиваетесь со строками пакета 'org.junit' или 'org.mockito'. Найдя, вы увеличиваете и вырываетесь из цикла.

Конечно, вы не ожидаете, что каждая строка в коде будет содержать эти строки.

Другие вопросы по тегам