Skip to content

Исправить отражение ошибок наборов и контейнеров в JUnit - #46

Merged
sfaqer merged 1 commit into
masterfrom
fix/junit-container-errors
Nov 10, 2026
Merged

sfaqer merged 1 commit into
masterfrom
fix/junit-container-errors

Conversation

@sfaqer

@sfaqer sfaqer commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

При ошибке конструктора или подготовки набора JUnit-отчёт мог содержать tests=0 и errors=0, поэтому потребитель отчёта показывал пустой успешный набор.

Теперь собственная ошибка набора или контейнера представлена отдельным testcase с именем <имя узла>.containerError и элементом error либо failure. Запись сохраняет причины, вывод и теги; уже выполненные дочерние тесты остаются в отчёте. Счётчики корня и вложенных наборов соответствуют фактическим записям XML. Общая статистика OneUnit не меняется.

Проверки:

  • Полный прогон: 432/432 теста, 17/17 наборов.
  • 25 проверок JUnit: ранние и поздние ошибки, assertions, закрытие, вложенные контейнеры и оба уровня изоляции; успешные, пустые и пропущенные узлы не получают лишних записей.
  • 34 проверки сохранения результатов, включая дочерние тесты после позднего сбоя.
  • Согласованность счётчиков проверяется по разобранному XML; diff --check, UTF-8 без BOM и CRLF проверены.

Summary by CodeRabbit

  • Новые возможности
    • JUnit-отчёты точнее отражают результаты вложенных тестов и наборов: отображают согласованные счётчики тестов, пропусков, ошибок и сбоев.
    • Ошибки тестовых наборов и контейнеров включаются в отчёт как отдельные записи с причинами и выводом.
  • Тесты
    • Добавлены проверки отчётов для ошибок на разных этапах выполнения, пропущенных и пустых наборов, вложенных контейнеров и изолированных запусков.

@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

Репортёр JUnit теперь рассчитывает агрегированные счётчики по результатам узлов и их потомков. Ошибки наборов выводятся как отдельные testcase. Добавлены фикстуры и проверки XML-отчётов для ошибок жизненного цикла, сбоев контейнеров, пропусков и пустых наборов.

Changes

Формирование JUnit-отчёта

Layer / File(s) Summary
Рекурсивные счётчики
src/core/internal/Классы/РепортерJUnit.os
Счётчики tests, skipped, failures и errors теперь рассчитываются по результатам узлов и их потомков. Значения используются в атрибутах JUnit.
Вывод записей test case
src/core/internal/Классы/РепортерJUnit.os
Ошибка узла набора выводится как отдельный testcase с именем <имя>.containerError. Проверки состояний ошибки и пропуска вынесены в общие функции.
Фикстуры ошибок и пустых наборов
tests/fixtures/results/*JUnit.os
Добавлены фикстуры для сбоев этапов жизненного цикла, ошибок источника данных и условия контейнера, пропуска теста и пустого набора.
Проверки XML-отчётов
tests/РепортерJUnit.os, tests/СохранениеРезультатов.os
Тесты проверяют записи testcase, причины ошибок, вывод и согласованность счётчиков. Разбор результатов JUnit дополнен подсчётом ошибок выполнения.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Change: Bug fix

Возможно связанные PR

  • sfaqer/OneUnit#40: сохраняет результаты завершённых дочерних тестов при позднем сбое набора и меняет обход дочерних узлов в JUnit-репортёре.
  • sfaqer/OneUnit#39: объединяет ошибки закрытия с результатом узла, который репортёр выводит как отдельный testcase.
  • sfaqer/OneUnit#37: добавляет получение результатов узлов, используемое репортёром для подсчёта записей JUnit.

Стихотворение

Кролик сверил счёт в XML,
У ошибок — свой testcase.
Вложенный сбой нашёл причину,
Пустой набор остался пуст.
Пропуск тихо получил отметку,
А тесты — точные числа.

Стихотворение

Кролик считает тесты в XML,
У каждой ошибки — свой testcase.
Причины вложены в отчёт,
Пропуск отмечен без ошибок.
Пустой набор хранит нули,
Проверки сверяют каждый счёт.

Merge Risk: Minimal · up to 79823

The change makes JUnit reports show suite and container errors as separate records with matching counters. No actionable merge-blocking risk is evident from the supplied context.

Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed Заголовок точно описывает основное изменение: отображение ошибок наборов и контейнеров в отчёте JUnit.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (8 skipped: 8 unsupported.)

Finishing Touches

Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Кролик считает тесты в XML,
У каждой ошибки — свой testcase.
Причины вложены в отчёт,
Пропуск отмечен без ошибок.
Пустой набор хранит нули,
Проверки сверяют каждый счёт.

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6b7cb240-9b15-45b1-ae91-38ee533e8633
Commits

Reviewing files that changed from the base of the PR and between d8a5057 and 798230d.

Files selected for processing: 8

  • src/core/internal/Классы/РепортерJUnit.os
  • tests/fixtures/results/ПоделочныйСбойНабораJUnit.os
  • tests/fixtures/results/ПроцессныйСбойНабораJUnit.os
  • tests/fixtures/results/ПустойНаборJUnit.os
  • tests/fixtures/results/СбойКонтейнераJUnit.os
  • tests/fixtures/results/СбойУровняНабораJUnit.os
  • tests/РепортерJUnit.os
  • tests/СохранениеРезультатов.os

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@sfaqer
sfaqer merged commit 79ebb44 into master Nov 10, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant