# testng-team/testng-eclipse architecture

> Architecture diagram of the GitHub repository testng-team/testng-eclipse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/testng-team/testng-eclipse
- Repository: https://github.com/testng-team/testng-eclipse

## Overview

TestNG for Eclipse integrates test discovery, launch configuration, TestNG execution, and an in-Eclipse results view. The main workflow starts from an Eclipse user’s selected tests or suite, configures and launches TestNG, then receives remote results and presents them in runner tabs. The plugin also supports suite/class creation, JUnit conversion, build-path setup, and a Maven launch provider. Relationships are limited to the README’s runner-flow description and source-index references; unsampled subsystem links are omitted or marked unverified.

Main entry points: [`testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java`](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java) (Runner view), [`testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java`](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java) (Test discovery), [`testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGLaunchConfigurationDelegate.java`](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGLaunchConfigurationDelegate.java) (Launch delegates), [`testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java`](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java) (Run summary)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Discovery and launch"]
  node_search["Test discovery"]
  node_parser["Type parsing<br/>[TypeParser.java]"]
  node_launchui["Launch configuration UI<br/>[TestNGMainTab.java]"]
  node_launchdelegate["Launch delegates"]
  node_launchhelper["Launch utilities<br/>[LaunchUtil.java]"]
end

subgraph group_results["Results experience"]
  node_runner["Runner view"]
  node_remoteclient["Remote result client"]
  node_runmodel["Run information<br/>[RunInfo.java]"]
  node_tabs["Result tabs<br/>[TestRunTab.java]"]
  node_summary["Run summary<br/>[SummaryTab.java]"]
  node_openaction["Open test action"]
end

subgraph group_authoring["Test authoring"]
  node_wizard["New test wizard"]
  node_suitegen["Suite generation"]
  node_conversion["JUnit conversion<br/>[JUnitVisitor.java]"]
end

subgraph group_integration["Platform integrations"]
  node_plugin["Plugin lifecycle<br/>[TestNGPlugin.java]"]
  node_buildpath["TestNG build path"]
  node_preferences["Preference storage"]
  node_maven["Maven launch provider"]
  node_mavenplugin["Maven plugin lifecycle<br/>[Activator.java]"]
  node_matcher["Pattern matching<br/>[StringMatcher.java]"]
end

node_user(("Eclipse user"))
node_testng{{"TestNG runtime"}}

node_user -.->|"selects tests"| node_search
node_search -->|"parses types"| node_parser
node_user -.->|"configures run"| node_launchui
node_launchui -.->|"sets options"| node_launchdelegate
node_launchdelegate -.->|"uses utilities"| node_launchhelper
node_launchdelegate -.->|"launches"| node_testng
node_testng -.->|"sends results"| node_remoteclient
node_remoteclient -->|"dispatches events"| node_runner
node_runner -.->|"records results"| node_runmodel
node_runner -->|"updates tabs"| node_tabs
node_tabs -.->|"renders summary"| node_summary
node_summary -->|"reads run data"| node_runmodel
node_summary -->|"offers navigation"| node_openaction
node_user -.->|"creates tests"| node_wizard
node_wizard -->|"generates suite"| node_suitegen
node_user -.->|"converts JUnit"| node_conversion
node_plugin -->|"opens view"| node_runner
node_buildpath -->|"logs errors"| node_plugin
node_plugin -->|"uses preferences"| node_preferences
node_maven -->|"uses launch utilities"| node_launchhelper
node_mavenplugin -.->|"provides integration"| node_maven
node_search -.->|"filters matches"| node_matcher

click node_search "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java"
click node_parser "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/util/TypeParser.java"
click node_launchui "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGMainTab.java"
click node_launchdelegate "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGLaunchConfigurationDelegate.java"
click node_launchhelper "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/LaunchUtil.java"
click node_runner "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java"
click node_remoteclient "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/EclipseTestRunnerClient.java"
click node_runmodel "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/RunInfo.java"
click node_tabs "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunTab.java"
click node_summary "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java"
click node_openaction "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/OpenTestAction.java"
click node_wizard "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/wizards/NewTestNGClassWizard.java"
click node_suitegen "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/SuiteGenerator.java"
click node_conversion "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/conversion/JUnitVisitor.java"
click node_plugin "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/TestNGPlugin.java"
click node_buildpath "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/buildpath/BuildPathSupport.java"
click node_preferences "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/PreferenceStoreUtil.java"
click node_maven "https://github.com/testng-team/testng-eclipse/blob/master/testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/MavenTestNGLaunchConfigurationProvider.java"
click node_mavenplugin "https://github.com/testng-team/testng-eclipse/blob/master/testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/Activator.java"
click node_matcher "https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/eclipse/core/text/StringMatcher.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_search,node_parser,node_launchui,node_launchdelegate,node_launchhelper,node_user toneBlue
class node_runner,node_remoteclient,node_runmodel,node_tabs,node_summary,node_openaction toneAmber
class node_wizard,node_suitegen,node_conversion toneMint
class node_plugin,node_buildpath,node_preferences,node_maven,node_mavenplugin,node_matcher toneRose
class node_testng toneIndigo
```

## Components

### Discovery and launch

- [Test discovery](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java`
- [Type parsing](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/util/TypeParser.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/util/TypeParser.java`
- [Launch configuration UI](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGMainTab.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGMainTab.java`
- [Launch delegates](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGLaunchConfigurationDelegate.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/launch/TestNGLaunchConfigurationDelegate.java`
- [Launch utilities](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/LaunchUtil.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/util/LaunchUtil.java`

### Results experience

- [Runner view](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java`
- [Remote result client](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/EclipseTestRunnerClient.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/EclipseTestRunnerClient.java`
- [Run information](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/RunInfo.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/RunInfo.java`
- [Result tabs](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunTab.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunTab.java`
- [Run summary](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java`
- [Open test action](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/OpenTestAction.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/OpenTestAction.java`

### Test authoring

- [New test wizard](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/wizards/NewTestNGClassWizard.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/wizards/NewTestNGClassWizard.java`
- [Suite generation](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/SuiteGenerator.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/util/SuiteGenerator.java`
- [JUnit conversion](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/ui/conversion/JUnitVisitor.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/conversion/JUnitVisitor.java`

### Platform integrations

- [Plugin lifecycle](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/TestNGPlugin.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/TestNGPlugin.java`
- [TestNG build path](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/buildpath/BuildPathSupport.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/buildpath/BuildPathSupport.java`
- [Preference storage](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/testng/eclipse/util/PreferenceStoreUtil.java): `testng-eclipse-plugin/src/main/org/testng/eclipse/util/PreferenceStoreUtil.java`
- [Maven launch provider](https://github.com/testng-team/testng-eclipse/blob/master/testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/MavenTestNGLaunchConfigurationProvider.java): `testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/MavenTestNGLaunchConfigurationProvider.java`
- [Maven plugin lifecycle](https://github.com/testng-team/testng-eclipse/blob/master/testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/Activator.java): `testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/Activator.java`
- [Pattern matching](https://github.com/testng-team/testng-eclipse/blob/master/testng-eclipse-plugin/src/main/org/eclipse/core/text/StringMatcher.java): `testng-eclipse-plugin/src/main/org/eclipse/core/text/StringMatcher.java`

### Other components

- **Eclipse user**
- **TestNG runtime**

## Connections

- Eclipse user → Test discovery: selects tests
- Test discovery → Type parsing: parses types (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/util/TestSearchEngine.java`)
- Eclipse user → Launch configuration UI: configures run
- Launch configuration UI → Launch delegates: sets options
- Launch delegates → Launch utilities: uses utilities
- Launch delegates → TestNG runtime: launches
- TestNG runtime → Remote result client: sends results
- Remote result client → Runner view: dispatches events (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/EclipseTestRunnerClient.java`)
- Runner view → Run information: records results (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java`)
- Runner view → Result tabs: updates tabs (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/TestRunnerViewPart.java`)
- Result tabs → Run summary: renders summary (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java`)
- Run summary → Run information: reads run data (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java`)
- Run summary → Open test action: offers navigation (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/ui/summary/SummaryTab.java`)
- Eclipse user → New test wizard: creates tests
- New test wizard → Suite generation: generates suite (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/wizards/NewTestNGClassWizard.java`)
- Eclipse user → JUnit conversion: converts JUnit
- Plugin lifecycle → Runner view: opens view (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/TestNGPlugin.java`)
- TestNG build path → Plugin lifecycle: logs errors (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/buildpath/BuildPathSupport.java`)
- Plugin lifecycle → Preference storage: uses preferences (evidence: `testng-eclipse-plugin/src/main/org/testng/eclipse/TestNGPlugin.java`)
- Maven launch provider → Launch utilities: uses launch utilities (evidence: `testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/MavenTestNGLaunchConfigurationProvider.java`)
- Maven plugin lifecycle → Maven launch provider: provides integration (evidence: `testng-maven-eclipse-plugin/src/org/testng/eclipse/maven/MavenTestNGLaunchConfigurationProvider.java`)
- Test discovery → Pattern matching: filters matches
