This is an old revision of the document!
Each project, which are Eclipse plug-in in nature, should come with a test project, which is a Java project in nature. For example, the SAD
project comes with the SAD Tests
project. Test projects include everything required to compile and run the tests, that means resources too, so they can be big. They use relative paths when accessing resources to run on any platform. They are known to compile and run on Windows and MacOS computers without requiring any changes.
Any test project includes a class aaa.bbb.test.TestPPP
that is the main test suite, where aaa.bbb
is the main package of the application project and PPP
the name of the application project. For example, in the SAD Tests
project, there is the package sad.detection.test
that declares the class TestSAD
, which is the main test suite for the SAD
project.
In application and test project, packages follow naming conventions.
A test project always includes a aaa.bbb.TestPPP
class, where aaa.bbb
is the main package in the application project, e.g., “sad.detection.test” in SAD Tests
, and PPP
is the name of the application project, e.g., SAD
.
A project that offer an interface to be implemented by a variety of algorithms always has a package aaa.bbb
and a package aaa.bbb.repository
. In aaa.bbb
are the interface(s) and the repository to dynamically access the algorithms at run-time. Repositories implements the interface util.repository.IRepository
and are final
. For examples:
Projects | Roles | Classes |
---|---|---|
PADL | Interfaces | padl.visitor.IGenerator and padl.visitor.IWalker |
Repository | padl.visitor.VisitorsRepository |
|
Accessors | padl.visitor.VisitorsRepository.getGenerators() and padl.visitor.VisitorsRepository.getWalkers() |
|
PADL Analyses | Interface | padl.analysis.IAnalysis |
Repository | padl.analysis.AnalysesRepository |
|
Accessor | padl.analysis.AnalysesRepository.getAnalyses() |
|
PADL Design Motifs | Interface | padl.motif.IDesignMotifModel |
Repository | padl.motif.DesignMotifsRepository |
|
Accessor | padl.motif.DesignMotifsRepository.getDesignMotifs() |
|
POM | Interfaces | pom.metrics.IMetric , pom.metrics.IUnaryMetric , pom.metrics.IBinaryMetric , pom.metrics.IContextDependentMetric , and pom.metrics.IContextIndependentMetric |
Repository | pom.metrics.MetricsRepository |
|
Accessors | pom.metrics.MetricsRepository.getMetrics() , pom.metrics.MetricsRepository.getMetric(String) , pom.metrics.MetricsRepository.getUnaryMetrics() , pom.metrics.MetricsRepository.getBinaryMetrics() , pom.metrics.MetricsRepository.getContextDependentMetrics() , and pom.metrics.MetricsRepository.getContextIndependentMetrics() |
|
SAD (Code) | Interface | sad.codesmell.detection.ICodeSmellDetection |
Repository | sad.codesmell.detection.CodeSmellDetectionsRepository |
|
Accessor | sad.codesmell.detection.CodeSmellDetectionsRepository.getCodeSmellDetections() and sad.codesmell.detection.CodeSmellDetectionsRepository.getCodeSmellDetection(String) |
|
SAD (Design) | Interface | sad.designsmell.detection.IDesignSmellDetection |
Repository | sad.designsmell.detection.DesignSmellDetectionsRepository |
|
Accessor | sad.designsmell.detection.DesignSmellDetectionsRepository.getDesignSmellDetections() and sad.designsmell.detection.DesignSmellDetectionsRepository.getDesignSmellDetection(String) |