Skip to content

Multi-language support — C++ and C# test execution #7

Description

@ThomasMalletCodra

Description

Extend ModuleTester beyond Python-only test execution to support running tests written in other languages — primarily C++ and C# (or web). This would allow teams working on multi-language projects to manage all their test plans in a single tool.

Current behavior

  • Only Python scripts can be executed as test items.
  • Test discovery (guitest) only works with Python files.
  • Non-Python tests must be wrapped in Python launcher scripts.

Expected behavior

  • Test items can reference executables (.exe, compiled test binaries) directly.
  • Support for common C++ test frameworks: Google Test, Catch2 (parse their output).
  • Support for C# test runners: dotnet test with result parsing.
  • Language-agnostic "command" test type for arbitrary executables.
  • Test discovery can be extended via plugins or configuration.

Implementation ideas

  1. Add a generic CommandTestItem type that runs any executable and captures exit code + output.
  2. Add output parsers for Google Test XML (--gtest_output=xml) and dotnet test --logger trx.
  3. Allow moduletester.ini to define custom test runners:
    [test_runners]
    cpp = gtest
    csharp = dotnet_test
  4. Plugin architecture: ITestRunner interface with discover(), execute(), parse_result().

Acceptance criteria

  • Arbitrary executables can be added as test items
  • Exit code is used as pass/fail indicator for generic commands
  • At least one C++ framework output parser (Google Test or Catch2)
  • At least one C# framework output parser (dotnet test)
  • Custom test runners can be configured per project

References

Ideas like Conan2 package manager for C++ project written in Python : https://github.com/conan-io/conan

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions