You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/05/16 20:34:39 UTC

(cayenne) branch master updated (1bcf43edc -> f2d7d299b)

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


    from 1bcf43edc Tests cleanup
     new d1f3d7c8e removing unused test mappings
     new 22a377c32 removing unused test mappings
     new f2d7d299b removing unused test mappings

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/cayenne/dbsync/merge/MergeCase.java |   2 +-
 .../dbsync/reverse/dbload/BaseLoaderIT.java        |   2 +-
 .../cayenne/dbsync/reverse/dbload/DbLoaderIT.java  |   2 +-
 .../cayenne/jcache/CayenneJCacheModuleIT.java      |   2 +-
 .../cayenne/CDOCollectionRelationshipIT.java       |   2 +-
 .../java/org/apache/cayenne/CDOMany2OneIT.java     |   2 +-
 .../org/apache/cayenne/CDOMany2OneNoRevIT.java     |   2 +-
 .../org/apache/cayenne/CDOMapRelationshipIT.java   |   2 +-
 .../java/org/apache/cayenne/CDOOne2ManyIT.java     |   2 +-
 .../java/org/apache/cayenne/CDOOneToManyFKIT.java  |   2 +-
 .../java/org/apache/cayenne/CDOOneToOneFKIT.java   |   2 +-
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java |   2 +-
 .../apache/cayenne/CDOReflexiveRelDeleteIT.java    |   2 +-
 .../cayenne/CDOReflexiveRelICustomSorterIT.java    |   2 +-
 .../java/org/apache/cayenne/CDOReflexiveRelIT.java |   2 +-
 .../org/apache/cayenne/CDOSetRelationshipIT.java   |   2 +-
 .../test/java/org/apache/cayenne/Cay2412IT.java    |   2 +-
 .../java/org/apache/cayenne/CayenneCompoundIT.java |   2 +-
 .../java/org/apache/cayenne/CayenneDOTestBase.java |   2 +-
 .../test/java/org/apache/cayenne/CayenneIT.java    |   2 +-
 .../CayennePersistentObjectFlattenedRelIT.java     |   2 +-
 .../apache/cayenne/CayennePersistentObjectIT.java  |   2 +-
 .../CayennePersistentObjectInContextIT.java        |   2 +-
 .../CayennePersistentObjectReflexiveIT.java        |   2 +-
 .../CayennePersistentObjectRelationshipsIT.java    |   2 +-
 ...yennePersistentObjectSetToManyCollectionIT.java |   2 +-
 .../CayennePersistentObjectSetToManyListIT.java    |   2 +-
 .../CayennePersistentObjectSetToManyMapIT.java     |   2 +-
 .../CayennePersistentObjectSetToManySetIT.java     |   2 +-
 .../CayennePersistentObjectValidationIT.java       |   2 +-
 .../org/apache/cayenne/CircularDependencyIT.java   |   2 +-
 .../org/apache/cayenne/CompoundPkChangeIT.java     |   2 +-
 .../apache/cayenne/DataContextConcurrencyIT.java   |   2 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |   2 +-
 .../apache/cayenne/FlattenedRelationshipsIT.java   |   2 +-
 .../java/org/apache/cayenne/GenericMappingIT.java  |   2 +-
 .../apache/cayenne/HybridPersistentObjectIT.java   |   2 +-
 .../java/org/apache/cayenne/LazyAttributesIT.java  |   2 +-
 .../java/org/apache/cayenne/ManyToManyJoinIT.java  |   2 +-
 .../org/apache/cayenne/ManyToManyNoJoinIT.java     |   2 +-
 .../java/org/apache/cayenne/MeaningfulFKIT.java    |   2 +-
 .../org/apache/cayenne/OneWayRelationshipsIT.java  |   2 +-
 .../cayenne/PersistenceByReachabilityIT.java       |   2 +-
 .../org/apache/cayenne/PersistentObjectIT.java     |   2 +-
 .../cayenne/PersistentObjectSerializationIT.java   |   2 +-
 .../java/org/apache/cayenne/PregeneratedPKIT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2509IT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2723IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2032IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2641IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2666IT.java  |   2 +-
 .../cayenne/access/DataContextArrayTypeIT.java     |   2 +-
 .../cayenne/access/DataContextBinaryPKIT.java      |   2 +-
 .../apache/cayenne/access/DataContextBlobIT.java   |   2 +-
 .../cayenne/access/DataContextCallbacksIT.java     |   2 +-
 .../apache/cayenne/access/DataContextCharPKIT.java |   2 +-
 .../cayenne/access/DataContextCharTypeIT.java      |   2 +-
 .../apache/cayenne/access/DataContextClobIT.java   |   2 +-
 .../apache/cayenne/access/DataContextCommitIT.java |   2 +-
 .../cayenne/access/DataContextCompoundRelIT.java   |   2 +-
 .../cayenne/access/DataContextCrossDBIT.java       |   2 +-
 .../access/DataContextDataChannelEventsIT.java     |   2 +-
 .../access/DataContextDecoratedStackIT.java        |   2 +-
 .../cayenne/access/DataContextDelegateIT.java      |   2 +-
 .../access/DataContextDelegateSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextDeleteRulesIT.java   |   2 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |   2 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |   2 +-
 .../access/DataContextEJBQLArrayResultIT.java      |   2 +-
 .../access/DataContextEJBQLConditionsIT.java       |   2 +-
 ...ontextEJBQLDateTimeFunctionalExpressionsIT.java |   2 +-
 .../cayenne/access/DataContextEJBQLDeleteIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLDeletePKIT.java |   2 +-
 .../access/DataContextEJBQLFetchJoinIT.java        |   2 +-
 .../DataContextEJBQLFlattenedRelationshipsIT.java  |   2 +-
 .../DataContextEJBQLFunctionalExpressionsIT.java   |   2 +-
 .../access/DataContextEJBQLGroupByHavingIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLIsNullIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLJoinsIT.java    |   2 +-
 .../DataContextEJBQLNumericalFunctionalIT.java     |   2 +-
 .../cayenne/access/DataContextEJBQLOrderByIT.java  |   2 +-
 .../access/DataContextEJBQLQueryCompoundIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLQueryIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLSubqueryIT.java |   2 +-
 .../access/DataContextEJBQLUpdateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLUpdateIT.java   |   2 +-
 ...tyWithMeaningfulPKAndCustomDbRowOpSorterIT.java |   2 +-
 .../DataContextEntityWithMeaningfulPKIT.java       |   2 +-
 .../DataContextExtendedTypeOperationsIT.java       |   2 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |   2 +-
 .../access/DataContextFlattenedAttributesIT.java   |   2 +-
 .../org/apache/cayenne/access/DataContextIT.java   |   2 +-
 .../cayenne/access/DataContextIteratedQueryIT.java |   2 +-
 .../cayenne/access/DataContextJoinAliasesIT.java   |   2 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |   2 +-
 .../apache/cayenne/access/DataContextNoPkIT.java   |   2 +-
 .../cayenne/access/DataContextObjectIdQueryIT.java |   2 +-
 .../access/DataContextObjectTrackingIT.java        |   2 +-
 .../cayenne/access/DataContextOrderingIT.java      |   2 +-
 .../cayenne/access/DataContextOuterJoinsIT.java    |   2 +-
 .../access/DataContextPaginatedQueryIT.java        |   2 +-
 .../access/DataContextPerformQueryAPIIT.java       |   2 +-
 .../access/DataContextPrefetchExtras1IT.java       |   2 +-
 .../access/DataContextPrefetchExtrasIT.java        |   2 +-
 .../cayenne/access/DataContextPrefetchIT.java      |   2 +-
 .../access/DataContextPrefetchMultistepIT.java     |   2 +-
 .../DataContextPrefetchQualifierOverlapIT.java     |   2 +-
 .../access/DataContextProcedureQueryIT.java        |   2 +-
 .../cayenne/access/DataContextQueryCachingIT.java  |   2 +-
 .../cayenne/access/DataContextQueryChainIT.java    |   2 +-
 .../cayenne/access/DataContextRefreshQueryIT.java  |   2 +-
 .../cayenne/access/DataContextRefreshingIT.java    |   2 +-
 .../access/DataContextRelationshipQueryIT.java     |   2 +-
 .../cayenne/access/DataContextRollbackIT.java      |   2 +-
 .../access/DataContextSQLTemplateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |   2 +-
 .../cayenne/access/DataContextSerializationIT.java |   2 +-
 .../access/DataContextSharedCacheEmpiricIT.java    |   2 +-
 .../cayenne/access/DataContextSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextValidationIT.java    |   2 +-
 .../cayenne/access/DataDomainCallbacksIT.java      |   2 +-
 .../apache/cayenne/access/DataDomainFiltersIT.java |   2 +-
 .../org/apache/cayenne/access/DataDomainIT.java    |   2 +-
 .../cayenne/access/DataDomainQueryActionIT.java    |   2 +-
 .../java/org/apache/cayenne/access/DataNodeIT.java |   2 +-
 .../apache/cayenne/access/DataNodeQueriesIT.java   |   2 +-
 .../cayenne/access/DataNodeQueryExceptionsIT.java  |   2 +-
 .../org/apache/cayenne/access/DataRowStoreIT.java  |   2 +-
 .../org/apache/cayenne/access/DataRowUtilsIT.java  |   2 +-
 .../org/apache/cayenne/access/DbGeneratorIT.java   |   2 +-
 .../access/DefaultDataRowStoreFactoryIT.java       |   2 +-
 .../org/apache/cayenne/access/DeleteObjectIT.java  |   2 +-
 .../org/apache/cayenne/access/DeleteRulesIT.java   |   2 +-
 .../org/apache/cayenne/access/EmbeddingIT.java     |   2 +-
 .../cayenne/access/EmbeddingSerializeIT.java       |   2 +-
 .../apache/cayenne/access/EntityInheritanceIT.java |   2 +-
 .../java/org/apache/cayenne/access/EnumIT.java     |   2 +-
 .../apache/cayenne/access/FlattenedPrefetchIT.java |   2 +-
 .../access/FlattenedRelationshipInContextIT.java   |   2 +-
 .../apache/cayenne/access/IdentityColumnsIT.java   |   2 +-
 .../cayenne/access/IncrementalFaultListIT.java     |   2 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |   2 +-
 .../org/apache/cayenne/access/MiscTypesIT.java     |   2 +-
 .../access/NestedDataContextLocalCacheIT.java      |   2 +-
 .../access/NestedDataContextParentEventsIT.java    |   2 +-
 .../NestedDataContextParentPeerEventsIT.java       |   2 +-
 .../access/NestedDataContextPeerEventsIT.java      |   2 +-
 .../cayenne/access/NestedDataContextReadIT.java    |   2 +-
 .../access/NestedDataContextRollbackIT.java        |   2 +-
 .../access/NestedDataContextValidationIT.java      |   2 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |   2 +-
 .../access/NestedDataContext_DeadlockIT.java       |   2 +-
 .../org/apache/cayenne/access/NumericTypesIT.java  |   2 +-
 .../cayenne/access/ObjectStoreDiffRetainingIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreGCIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreIT.java   |   2 +-
 .../apache/cayenne/access/OptimisticLockingIT.java |   2 +-
 .../access/PrefetchProcessorTreeBuilderIT.java     |   2 +-
 .../cayenne/access/PrimitiveAttributesIT.java      |   2 +-
 .../apache/cayenne/access/QuotedIdentifiersIT.java |   2 +-
 .../cayenne/access/ReturnTypesMappingIT.java       |   2 +-
 .../SimpleIdIncrementalFaultListDataRowsIT.java    |   2 +-
 .../access/SimpleIdIncrementalFaultListIT.java     |   2 +-
 .../SimpleIdIncrementalFaultListPrefetchIT.java    |   2 +-
 .../cayenne/access/SingleTableInheritance1IT.java  |   2 +-
 .../org/apache/cayenne/access/ToManyListIT.java    |   2 +-
 .../java/org/apache/cayenne/access/UUIDIT.java     |   2 +-
 .../cayenne/access/VerticalInheritanceIT.java      |   2 +-
 .../VerticalInheritanceMultipleAttributesIT.java   |   2 +-
 .../access/dbsync/SchemaUpdateStrategyBase.java    |   2 +-
 .../access/jdbc/BatchActionGeneratedIT.java        |   2 +-
 .../apache/cayenne/access/jdbc/BatchActionIT.java  |   2 +-
 .../cayenne/access/jdbc/BatchActionLockingIT.java  |   2 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   |   2 +-
 .../apache/cayenne/access/jdbc/SelectActionIT.java |   2 +-
 ...SelectActionWithUnsupportedDistinctTypesIT.java |   2 +-
 .../translator/batch/DeleteBatchTranslatorIT.java  |   2 +-
 .../translator/batch/InsertBatchTranslatorIT.java  |   2 +-
 .../batch/SoftDeleteBatchTranslatorIT.java         |   2 +-
 .../translator/batch/UpdateBatchTranslatorIT.java  |   2 +-
 .../batch/legacy/DefaultBatchTranslatorIT.java     |   2 +-
 .../translator/ejbql/EJBQLSelectTranslatorIT.java  |   2 +-
 .../select/DefaultObjectSelectTranslatorIT.java    |   2 +-
 .../select/DefaultSelectTranslatorIT.java          |   2 +-
 .../select/DescriptorColumnExtractorIT.java        |   2 +-
 .../select/ExistsExpressionTranslatorIT.java       |   2 +-
 .../translator/select/ObjPathProcessorIT.java      |   2 +-
 .../QualifierTranslatorExistExpressionIT.java      |   2 +-
 .../translator/select/QualifierTranslatorIT.java   |   2 +-
 .../select/VerticalInheritanceJoinOrderIT.java     |   2 +-
 .../cayenne/access/types/DateTimeTypesIT.java      |   2 +-
 .../access/types/LegacyDateTimeTypesIT.java        |   2 +-
 .../access/util/DefaultOperationObserverIT.java    |   2 +-
 .../cayenne/ashwood/AshwoodEntitySorterIT.java     |   2 +-
 .../AshwoodEntitySorter_RelationshipsIT.java       |   2 +-
 .../ashwood/WeightedAshwoodEntitySorterIT.java     |   2 +-
 .../org/apache/cayenne/cache/QueryCacheIT.java     |   2 +-
 .../runtime/JNDIDataSourceFactoryIT.java           |   2 +-
 .../datasource/BasePoolingDataSourceIT.java        |   4 +-
 ...PoolingDataSource_FailingValidationQueryIT.java |  15 +-
 .../java/org/apache/cayenne/dba/AutoAdapterIT.java |   2 +-
 .../cayenne/dba/ConcurrentPkGeneratorIT.java       |   2 +-
 .../java/org/apache/cayenne/dba/JdbcAdapterIT.java |   2 +-
 .../org/apache/cayenne/dba/JdbcPkGeneratorIT.java  |   2 +-
 .../java/org/apache/cayenne/dba/PkGeneratorIT.java |   2 +-
 .../org/apache/cayenne/dba/TypesMappingIT.java     |   2 +-
 .../apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java |   2 +-
 .../apache/cayenne/dba/mysql/MySQLAdapterIT.java   |   2 +-
 .../cayenne/dba/oracle/Oracle8AdapterIT.java       |   2 +-
 .../apache/cayenne/dba/oracle/OracleAdapterIT.java |   2 +-
 .../cayenne/dba/oracle/OraclePkGeneratorIT.java    |   2 +-
 .../cayenne/dba/postgres/PostgresAdapterIT.java    |   2 +-
 .../cayenne/dba/sqlserver/SQLServerAdapterIT.java  |   2 +-
 .../cayenne/dba/sqlserver/SQLServerSnifferIT.java  |   2 +-
 .../cayenne/ejbql/EJBQLParser_CompileIT.java       |   2 +-
 .../exp/AggregateExpInMemoryEvaluationIT.java      |   2 +-
 .../java/org/apache/cayenne/exp/CaseWhenIT.java    |   2 +-
 .../apache/cayenne/exp/ExpressionFactoryIT.java    |   2 +-
 .../java/org/apache/cayenne/exp/ExpressionIT.java  |   2 +-
 .../cayenne/exp/ParsedExpQualifierCompatIT.java    |   2 +-
 .../apache/cayenne/exp/TranslateExpressionIT.java  |   2 +-
 .../org/apache/cayenne/exp/parser/ASTDbPathIT.java |   2 +-
 .../org/apache/cayenne/exp/parser/ASTEqualIT.java  |   2 +-
 .../org/apache/cayenne/exp/parser/ASTExistsIT.java |   2 +-
 .../apache/cayenne/exp/parser/ASTExtractIT.java    |   2 +-
 .../cayenne/exp/parser/ASTFunctionCallDateIT.java  |   2 +-
 .../cayenne/exp/parser/ASTFunctionCallMathIT.java  |   2 +-
 .../exp/parser/ASTFunctionCallStringIT.java        |   2 +-
 .../apache/cayenne/exp/parser/ASTNotExistsIT.java  |   2 +-
 .../cayenne/exp/parser/ASTObjPathEnumIT.java       |   2 +-
 .../apache/cayenne/exp/parser/ASTObjPathIT.java    |   2 +-
 .../parser/ExpressionCollectionEvaluationIT.java   |   2 +-
 .../cayenne/exp/parser/ExpressionEvaluationIT.java |   2 +-
 .../apache/cayenne/exp/property/IdPropertyIT.java  |   2 +-
 .../apache/cayenne/exp/property/PathAliasesIT.java |   2 +-
 .../java/org/apache/cayenne/map/AnnotationIT.java  |   2 +-
 .../java/org/apache/cayenne/map/DbEntityIT.java    |   2 +-
 .../org/apache/cayenne/map/DbRelationshipIT.java   |   2 +-
 .../test/java/org/apache/cayenne/map/EntityIT.java |   2 +-
 .../map/EntityResolverClassDescriptorIT.java       |   2 +-
 .../cayenne/map/EntityResolverGenericStackIT.java  |   2 +-
 .../org/apache/cayenne/map/EntityResolverIT.java   |   2 +-
 .../java/org/apache/cayenne/map/ObjEntityIT.java   |   2 +-
 .../org/apache/cayenne/map/ObjRelationshipIT.java  |   2 +-
 .../java/org/apache/cayenne/query/CAY2541IT.java   |   2 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |   2 +-
 .../apache/cayenne/query/EJBQLQueryCountIT.java    |   2 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |   2 +-
 .../apache/cayenne/query/EJBQLQueryNumericIT.java  |   2 +-
 .../query/FluentSelectPrefetchRouterActionIT.java  |   2 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |   2 +-
 .../cayenne/query/ObjectSelectIteratedQueryIT.java |   2 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |   2 +-
 .../cayenne/query/ObjectSelect_CacheKeyIT.java     |   2 +-
 .../query/ObjectSelect_FetchLimitOrderingIT.java   |   2 +-
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |   2 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |   2 +-
 .../cayenne/query/ObjectSelect_SubqueryIT.java     |   2 +-
 .../org/apache/cayenne/query/ProcedureCallIT.java  |   2 +-
 .../cayenne/query/ProcedureQueryCacheKeyIT.java    |   2 +-
 .../org/apache/cayenne/query/QueryChainIT.java     |   2 +-
 .../org/apache/cayenne/query/QueryTimeoutIT.java   |   2 +-
 .../cayenne/query/QueryWithCompoundJoinIT.java     |   2 +-
 .../query/QueryWithInheritancePrefetchIT.java      |   2 +-
 .../java/org/apache/cayenne/query/SQLExecIT.java   |   2 +-
 .../java/org/apache/cayenne/query/SQLSelectIT.java |   2 +-
 .../cayenne/query/SQLSelectIteratedQueryIT.java    |   2 +-
 .../cayenne/query/SQLTemplateCacheKeyIT.java       |   2 +-
 .../org/apache/cayenne/query/SQLTemplateIT.java    |   2 +-
 .../cayenne/query/SelectByIdIteratedQueryIT.java   |   2 +-
 .../org/apache/cayenne/query/SelectById_RunIT.java |   2 +-
 .../apache/cayenne/query/SelectQueryClobIT.java    |   2 +-
 .../cayenne/query/SelectQueryReturnTypesIT.java    |   2 +-
 .../apache/cayenne/query/StatementFetchSizeIT.java |   2 +-
 .../cayenne/reflect/LifecycleCallbackOrderIT.java  |   2 +-
 .../reflect/LifecycleCallbackRegistryIT.java       |   2 +-
 .../LifecycleCallbackRegistry_InheritanceIT.java   |   2 +-
 .../reflect/MixedPersistenceStrategyIT.java        |   2 +-
 .../PersistentObjectDescriptorFactoryIT.java       |   2 +-
 ...tObjectDescriptorFactory_InheritanceMapsIT.java |   2 +-
 ...ectDescriptorFactory_VerticalInheritanceIT.java |   2 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |   6 +-
 .../apache/cayenne/runtime/CayenneRuntimeIT.java   |   2 +-
 .../template/directive/BindDirectiveIT.java        |   2 +-
 .../template/directive/ResultDirectiveIT.java      |   2 +-
 .../testdo/deleterules/ClientDeleteCascade.java    |  28 ---
 .../testdo/deleterules/ClientDeleteDeny.java       |  28 ---
 .../testdo/deleterules/ClientDeleteNullify.java    |  28 ---
 .../testdo/deleterules/ClientDeleteRule.java       |  28 ---
 .../cayenne/testdo/deleterules/DeleteCascade.java  |  28 ---
 .../cayenne/testdo/deleterules/DeleteDeny.java     |  28 ---
 .../cayenne/testdo/deleterules/DeleteNullify.java  |  28 ---
 .../cayenne/testdo/deleterules/DeleteRule.java     |  28 ---
 .../deleterules/auto/_ClientDeleteCascade.java     |  56 -----
 .../testdo/deleterules/auto/_ClientDeleteDeny.java |  56 -----
 .../deleterules/auto/_ClientDeleteNullify.java     |  56 -----
 .../testdo/deleterules/auto/_ClientDeleteRule.java | 114 ----------
 .../testdo/deleterules/auto/_DeleteCascade.java    | 112 ----------
 .../testdo/deleterules/auto/_DeleteDeny.java       | 112 ----------
 .../testdo/deleterules/auto/_DeleteNullify.java    | 112 ----------
 .../testdo/deleterules/auto/_DeleteRule.java       | 164 --------------
 .../testdo/lifecycles/ClientLifecycles.java        |  28 ---
 .../cayenne/testdo/lifecycles/Lifecycles.java      |  25 ---
 .../testdo/lifecycles/auto/_ClientLifecycles.java  |  37 ----
 .../testdo/lifecycles/auto/_Lifecycles.java        |  93 --------
 .../cayenne/testdo/toone/ClientTooneDep.java       |  28 ---
 .../cayenne/testdo/toone/ClientTooneMaster.java    |  28 ---
 .../org/apache/cayenne/testdo/toone/TooneDep.java  |  25 ---
 .../apache/cayenne/testdo/toone/TooneMaster.java   |  25 ---
 .../cayenne/testdo/toone/auto/_ClientTooneDep.java |  33 ---
 .../testdo/toone/auto/_ClientTooneMaster.java      |  33 ---
 .../cayenne/testdo/toone/auto/_TooneDep.java       |  92 --------
 .../cayenne/testdo/toone/auto/_TooneMaster.java    |  92 --------
 .../cayenne/tx/TransactionCustomConnectionIT.java  |   2 +-
 .../apache/cayenne/tx/TransactionIsolationIT.java  |   2 +-
 .../tx/TransactionPropagationRollbackIT.java       |   2 +-
 .../org/apache/cayenne/tx/TransactionThreadIT.java |   2 +-
 .../org/apache/cayenne/tx/UserTransactionIT.java   |   2 +-
 .../unit/{runtime => }/CayenneProjects.java        |   8 +-
 .../org/apache/cayenne/unit/CayenneTestEnvIT.java  |   1 -
 .../org/apache/cayenne/unit/CayenneTestsEnv.java   |  31 +--
 .../org/apache/cayenne/unit/DbSchemaManager.java   |  12 +-
 .../unit/{runtime => }/FlavoredDbHelper.java       |   2 +-
 .../org/apache/cayenne/unit/PeopleProjectCase.java |   1 -
 .../unit/datasource/DataSourceConfigFile.java      | 106 ++++++++++
 .../unit/datasource/DataSourceConfigLoader.java    | 196 +++++++++++++++++
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_191IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_194IT.java    |   2 +-
 .../cayenne/unit/runtime/ConnectionProperties.java | 128 -----------
 ...untimeCaseBatchQueryBuilderFactoryProvider.java |  32 ---
 .../RuntimeCaseDataSourceDescriptorProvider.java   | 235 ---------------------
 .../unit/runtime/RuntimeCaseDbAdapterProvider.java |  51 -----
 .../cayenne/unit/runtime/RuntimeCaseModule.java    | 201 ------------------
 .../unit/runtime/UnitDataSourceDescriptor.java     |  50 -----
 ...ainerProvider.java => Db2ContainerStarter.java} |  20 +-
 ...tainerProvider.java => DbContainerStarter.java} |  21 +-
 ...rProvider.java => MariaDbContainerStarter.java} |  12 +-
 ...nerProvider.java => MysqlContainerStarter.java} |  13 +-
 ...erProvider.java => OracleContainerStarter.java} |  20 +-
 ...Provider.java => PostgresContainerStarter.java} |  13 +-
 ...rovider.java => SqlServerContainerStarter.java} |  13 +-
 .../apache/cayenne/util/DeepMergeOperationIT.java  |   2 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |   2 +-
 .../org/apache/cayenne/value/json/JsonTypeIT.java  |   2 +-
 cayenne/src/test/resources/cayenne-ALL.xml         |   3 -
 .../src/test/resources/cayenne-delete-rules.xml    |   7 -
 cayenne/src/test/resources/cayenne-lifecycles.xml  |   7 -
 cayenne/src/test/resources/cayenne-toone.xml       |   7 -
 cayenne/src/test/resources/delete-rules.map.xml    |  62 ------
 cayenne/src/test/resources/lifecycles.map.xml      |  14 --
 cayenne/src/test/resources/toone.map.xml           |  23 --
 352 files changed, 663 insertions(+), 2782 deletions(-)
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/ClientLifecycles.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/Lifecycles.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_ClientLifecycles.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneDep.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneMaster.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneDep.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneMaster.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneDep.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneMaster.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
 rename cayenne/src/test/java/org/apache/cayenne/unit/{runtime => }/CayenneProjects.java (92%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/{runtime => }/FlavoredDbHelper.java (97%)
 create mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
 create mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseBatchQueryBuilderFactoryProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{Db2ContainerProvider.java => Db2ContainerStarter.java} (78%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{TestContainerProvider.java => DbContainerStarter.java} (69%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{MariaDbContainerProvider.java => MariaDbContainerStarter.java} (77%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{MysqlContainerProvider.java => MysqlContainerStarter.java} (82%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{OracleContainerProvider.java => OracleContainerStarter.java} (75%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{PostgresContainerProvider.java => PostgresContainerStarter.java} (76%)
 rename cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/{SqlServerContainerProvider.java => SqlServerContainerStarter.java} (77%)
 delete mode 100644 cayenne/src/test/resources/cayenne-delete-rules.xml
 delete mode 100644 cayenne/src/test/resources/cayenne-lifecycles.xml
 delete mode 100644 cayenne/src/test/resources/cayenne-toone.xml
 delete mode 100644 cayenne/src/test/resources/delete-rules.map.xml
 delete mode 100644 cayenne/src/test/resources/lifecycles.map.xml
 delete mode 100644 cayenne/src/test/resources/toone.map.xml


(cayenne) 02/03: removing unused test mappings

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 22a377c32a093d3f916ad06ab961e10d85f1cf86
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sat May 16 15:23:29 2026 -0400

    removing unused test mappings
---
 .../datasource/BasePoolingDataSourceIT.java        |   2 +-
 ...PoolingDataSource_FailingValidationQueryIT.java |  15 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |   4 +-
 .../org/apache/cayenne/unit/CayenneTestsEnv.java   |  27 ++--
 .../unit/{runtime => }/ConnectionProperties.java   |   2 +-
 .../org/apache/cayenne/unit/DbSchemaManager.java   |   9 +-
 ...r.java => TestDataSourceDescriptorFactory.java} | 173 +++++++++++----------
 .../{runtime => }/UnitDataSourceDescriptor.java    |   2 +-
 .../unit/runtime/RuntimeCaseDbAdapterProvider.java |  51 ------
 .../cayenne/unit/runtime/RuntimeCaseModule.java    |  32 ----
 10 files changed, 120 insertions(+), 197 deletions(-)

diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
index f777c467f..aac158659 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
@@ -40,7 +40,7 @@ public class BasePoolingDataSourceIT {
 
 	@BeforeEach
 	public void before() throws SQLException {
-        DataSourceDescriptor dataSourceInfo = env.dataSourceDescriptor();
+        DataSourceDescriptor dataSourceInfo = CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor();
         AdhocObjectFactory objectFactory = env.adhocObjectFactory();
 
 		Driver driver = objectFactory.newInstance(Driver.class, dataSourceInfo.getJdbcDriver());
diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
index 0642961c6..2e3023636 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
@@ -18,14 +18,14 @@
  ****************************************************************/
 package org.apache.cayenne.datasource;
 
-import java.sql.Driver;
-
 import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
+import org.apache.cayenne.unit.runtime.CayenneProjects;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import java.sql.Driver;
+
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class PoolingDataSource_FailingValidationQueryIT {
@@ -45,9 +45,12 @@ public class PoolingDataSource_FailingValidationQueryIT {
 	@Test
 	public void constructor() {
 		assertThrows(CayenneRuntimeException.class, () -> {
-			Driver driver = env.adhocObjectFactory().newInstance(Driver.class, env.dataSourceDescriptor().getJdbcDriver());
-			DriverDataSource nonPooling = new DriverDataSource(driver, env.dataSourceDescriptor().getDataSourceUrl(),
-					env.dataSourceDescriptor().getUserName(), env.dataSourceDescriptor().getPassword());
+			Driver driver = env.adhocObjectFactory().newInstance(Driver.class, CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getJdbcDriver());
+			DriverDataSource nonPooling = new DriverDataSource(
+					driver,
+					CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getDataSourceUrl(),
+					CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getUserName(),
+					CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getPassword());
 
 			PoolingDataSourceParameters poolParameters = createParameters();
 			UnmanagedPoolingDataSource ds = new UnmanagedPoolingDataSource(nonPooling, poolParameters);
diff --git a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
index 1eefe1d6b..6babb7960 100644
--- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
@@ -59,8 +59,8 @@ public class CayenneRuntimeBuilderIT {
     @BeforeEach
     public void setUp() throws Exception {
 
-        this.dsi = env.dataSourceDescriptor();
-        this.dataSource = env.runtime().getDataSource("testmap");
+        this.dsi = CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor();
+        this.dataSource = CayenneTestsEnv.COMMON_SCHEMA.dataSource();
 
         env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME")
                 .insert(33001, "AA1")
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
index a20cac8f3..ab0588479 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -34,7 +34,6 @@ import org.apache.cayenne.configuration.runtime.DbAdapterFactory;
 import org.apache.cayenne.datasource.DataSourceBuilder;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.log.JdbcEventLogger;
@@ -46,7 +45,6 @@ import org.apache.cayenne.test.jdbc.DbHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
 import org.apache.cayenne.unit.runtime.FlavoredDbHelper;
-import org.apache.cayenne.unit.runtime.RuntimeCaseModule;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
@@ -64,25 +62,22 @@ import java.util.stream.Collectors;
  */
 public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
 
-    private static final Injector INJECTOR;
-
     // shared stack parts... use these directly from the tests
+    // TODO: we should support multiple physically-isolated schemas for cleaner tests
     public static final DbSchemaManager COMMON_SCHEMA;
 
     static {
-        INJECTOR = DIBootstrap.createInjector(new RuntimeCaseModule());
-
-        DataSourceDescriptor dataSourceDescriptor = INJECTOR.getInstance(DataSourceDescriptor.class);
-        DataSource dataSource = DataSourceBuilder
-                .url(dataSourceDescriptor.getDataSourceUrl())
-                .driver(dataSourceDescriptor.getJdbcDriver())
-                .userName(dataSourceDescriptor.getUserName())
-                .password(dataSourceDescriptor.getPassword())
-                .pool(dataSourceDescriptor.getMinConnections(), dataSourceDescriptor.getMaxConnections())
+        DataSourceDescriptor dsDescriptor = TestDataSourceDescriptorFactory.create();
+        DataSource ds = DataSourceBuilder
+                .url(dsDescriptor.getDataSourceUrl())
+                .driver(dsDescriptor.getJdbcDriver())
+                .userName(dsDescriptor.getUserName())
+                .password(dsDescriptor.getPassword())
+                .pool(dsDescriptor.getMinConnections(), dsDescriptor.getMaxConnections())
                 .build();
 
         // "cayenne-ALL.xml" is a special synthetic project file that includes all test DataMaps
-        COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dataSource);
+        COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dsDescriptor, ds);
         COMMON_SCHEMA.rebuildSchema();
     }
 
@@ -263,10 +258,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         return dbCleaner;
     }
 
-    public DataSourceDescriptor dataSourceDescriptor() {
-        return INJECTOR.getInstance(DataSourceDescriptor.class);
-    }
-
     public SQLTemplateCustomizer sqlTemplateCustomizer() {
         return SQLTemplateCustomizer.of(dataNode().getAdapter());
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java b/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java
similarity index 98%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java
index 76daf4faa..60426e15a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
index 592573fb6..5df4846ab 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.unit;
 
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
@@ -61,13 +62,15 @@ public class DbSchemaManager {
     private static final Set<String> EXTRA_EXCLUDED_FOR_NO_LOB = Set.of("CLOB_DETAIL");
     private static final Set<String> EXTRA_EXCLUDED_FOR_NO_NATIVE_JSON = Set.of("JSON_OTHER");
 
+    private final DataSourceDescriptor dataSourceDescriptor;
     private final DataSource dataSource;
     private final TestDbAdapter testDbAdapter;
     private final DataDomain domain;
     private final List<DataMap> dataMapsInSchemaSetupOrder;
 
-    public DbSchemaManager(String project, DataSource dataSource) {
+    public DbSchemaManager(String project, DataSourceDescriptor dataSourceDescriptor, DataSource dataSource) {
 
+        this.dataSourceDescriptor = dataSourceDescriptor;
         this.dataSource = dataSource;
         this.domain = CayenneRuntime.builder()
                 .addConfig(project)
@@ -96,6 +99,10 @@ public class DbSchemaManager {
         return dataSource;
     }
 
+    public DataSourceDescriptor dataSourceDescriptor() {
+        return dataSourceDescriptor;
+    }
+
     /**
      * Rebuilds the test schema, combining all DataMaps that require schema support. Schema generation is done like that
      * instead of on-demand per-DataMap  to avoid conflicts when dropping and generating PK objects.
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java
similarity index 51%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java
index d5365be08..f885a035a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java
@@ -16,15 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.dba.derby.DerbyAdapter;
 import org.apache.cayenne.dba.h2.H2Adapter;
 import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter;
 import org.apache.cayenne.dba.sqlite.SQLiteAdapter;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.unit.testcontainers.Db2ContainerProvider;
+import org.apache.cayenne.unit.testcontainers.MariaDbContainerProvider;
+import org.apache.cayenne.unit.testcontainers.MysqlContainerProvider;
+import org.apache.cayenne.unit.testcontainers.OracleContainerProvider;
+import org.apache.cayenne.unit.testcontainers.PostgresContainerProvider;
+import org.apache.cayenne.unit.testcontainers.SqlServerContainerProvider;
 import org.apache.cayenne.unit.testcontainers.TestContainerProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,9 +41,9 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDataSourceDescriptor> {
+public class TestDataSourceDescriptorFactory {
 
-    private static final Logger logger = LoggerFactory.getLogger(RuntimeCaseDataSourceDescriptorProvider.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestDataSourceDescriptorFactory.class);
 
     private static final String PROPERTIES_FILE = "connection.properties";
     private static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
@@ -50,86 +54,32 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat
     private static final String URL_KEY_MAVEN = "cayenneJdbcUrl";
     private static final String DRIVER_KEY_MAVEN = "cayenneJdbcDriver";
 
-    private Map<String, UnitDataSourceDescriptor> inMemoryDataSources;
-    private ConnectionProperties connectionProperties;
 
-    private final Map<String, TestContainerProvider> testContainerProviders;
+    public static UnitDataSourceDescriptor create() {
 
-    public RuntimeCaseDataSourceDescriptorProvider(@Inject Map<String, TestContainerProvider> testContainerProviders)
-            throws IOException {
-
-        this.testContainerProviders = testContainerProviders;
         Map<String, String> propertiesMap = new HashMap<>();
 
         File file = connectionPropertiesFile();
-        if(file.exists()) {
+        if (file.exists()) {
             Properties properties = new Properties();
             properties.load(new FileReader(file));
             properties.forEach((k, v) -> propertiesMap.put(k.toString(), v.toString()));
         }
 
-        this.connectionProperties = new ConnectionProperties(propertiesMap);
-        logger.info("Loaded  " + connectionProperties.size() + " DataSource configurations from properties file");
-
-        this.inMemoryDataSources = new HashMap<>();
-
-        // preload default in-memory DataSources. Will use them as defaults if
-        // nothing is configured in ~/.cayenne/connection.properties
-        UnitDataSourceDescriptor hsqldb = new UnitDataSourceDescriptor();
-        hsqldb.setAdapterClassName(HSQLDBAdapter.class.getName());
-        hsqldb.setUserName("sa");
-        hsqldb.setPassword("");
-        hsqldb.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false");
-        hsqldb.setJdbcDriver("org.hsqldb.jdbcDriver");
-        hsqldb.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-        hsqldb.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        inMemoryDataSources.put("hsql", hsqldb);
-
-        UnitDataSourceDescriptor h2 = new UnitDataSourceDescriptor();
-        h2.setAdapterClassName(H2Adapter.class.getName());
-        h2.setUserName("sa");
-        h2.setPassword("");
-        h2.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;");
-        h2.setJdbcDriver("org.h2.Driver");
-        h2.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-        h2.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        inMemoryDataSources.put("h2", h2);
-
-        UnitDataSourceDescriptor derby = new UnitDataSourceDescriptor();
-        derby.setAdapterClassName(DerbyAdapter.class.getName());
-        derby.setUserName("sa");
-        derby.setPassword("");
-        derby.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
-        derby.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
-        derby.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-        derby.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        inMemoryDataSources.put("derby", derby);
-
-        UnitDataSourceDescriptor sqlite = new UnitDataSourceDescriptor();
-        sqlite.setAdapterClassName(SQLiteAdapter.class.getName());
-        sqlite.setUserName("sa");
-        sqlite.setPassword("");
-        sqlite.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text");
-        sqlite.setJdbcDriver("org.sqlite.JDBC");
-        sqlite.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-        sqlite.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        inMemoryDataSources.put("sqlite", sqlite);
-    }
-
-    @Override
-    public UnitDataSourceDescriptor get() throws ConfigurationException {
+        ConnectionProperties connectionProperties = new ConnectionProperties(propertiesMap);
+        LOGGER.info("Loaded  " + connectionProperties.size() + " DataSource configurations from properties file");
 
         String connectionKey = property(CONNECTION_NAME_KEY);
         if (connectionKey == null) {
             connectionKey = "hsql";
         }
 
-        logger.info("Connection key: " + connectionKey);
+        LOGGER.info("Connection key: " + connectionKey);
         UnitDataSourceDescriptor connectionInfo = connectionProperties.getConnection(connectionKey);
 
         // attempt default if invalid key is specified
         if (connectionInfo == null) {
-            connectionInfo = inMemoryDataSources.get(connectionKey);
+            connectionInfo = checkInMemoryDataSource(connectionKey);
         }
 
         if (connectionInfo == null) {
@@ -142,11 +92,62 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat
             throw new ConfigurationException("No connection info for key: " + connectionKey);
         }
 
-        logger.info("loaded connection info: " + connectionInfo);
+        LOGGER.info("loaded connection info: " + connectionInfo);
         return connectionInfo;
     }
 
-    private UnitDataSourceDescriptor checkTestContainersDataSource(String connectionKey) {
+    private static UnitDataSourceDescriptor checkInMemoryDataSource(String connectionKey) {
+        return switch (connectionKey) {
+            case "hsql" -> {
+                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
+                descriptor.setAdapterClassName(HSQLDBAdapter.class.getName());
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false");
+                descriptor.setJdbcDriver("org.hsqldb.jdbcDriver");
+                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "h2" -> {
+                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
+                descriptor.setAdapterClassName(H2Adapter.class.getName());
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;");
+                descriptor.setJdbcDriver("org.h2.Driver");
+                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "derby" -> {
+                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
+                descriptor.setAdapterClassName(DerbyAdapter.class.getName());
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
+                descriptor.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
+                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "sqlite" -> {
+                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
+                descriptor.setAdapterClassName(SQLiteAdapter.class.getName());
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text");
+                descriptor.setJdbcDriver("org.sqlite.JDBC");
+                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
+                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            default -> null;
+        };
+    }
+
+    private static UnitDataSourceDescriptor checkTestContainersDataSource(String connectionKey) {
+
         // special case for the testcontainers profile
         if (!connectionKey.endsWith("-tc")) {
             return null;
@@ -154,12 +155,21 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat
 
         String db = connectionKey.substring(0, connectionKey.length() - 3);
 
-        TestContainerProvider testContainerProvider = testContainerProviders.get(db);
-        if(testContainerProvider == null) {
+        TestContainerProvider testContainerProvider = switch (db) {
+            case "mysql" -> new MysqlContainerProvider();
+            case "mariadb" -> new MariaDbContainerProvider();
+            case "postgres" -> new PostgresContainerProvider();
+            case "sqlserver" -> new SqlServerContainerProvider();
+            case "oracle" -> new OracleContainerProvider();
+            case "db2" -> new Db2ContainerProvider();
+            default -> null;
+        };
+
+        if (testContainerProvider == null) {
             return null;
         }
 
-        String version = property(CONNECTION_DB_VERSION);
+        String version = System.getProperty(CONNECTION_DB_VERSION);
         JdbcDatabaseContainer<?> container = testContainerProvider.startContainer(version);
 
         UnitDataSourceDescriptor sourceInfo = new UnitDataSourceDescriptor();
@@ -173,23 +183,23 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat
         return sourceInfo;
     }
 
-    private File connectionPropertiesFile() {
+    private static File connectionPropertiesFile() {
         return new File(cayenneUserDir(), PROPERTIES_FILE);
     }
 
-    private File cayenneUserDir() {
+    private static File cayenneUserDir() {
         File homeDir = new File(System.getProperty("user.home"));
         return new File(homeDir, ".cayenne");
     }
 
-    private UnitDataSourceDescriptor applyOverrides(UnitDataSourceDescriptor connectionInfo) {
-        String adapter = property(ADAPTER_KEY_MAVEN);
-        String user = property(USER_NAME_KEY_MAVEN);
-        String pass = property(PASSWORD_KEY_MAVEN);
-        String url = property(URL_KEY_MAVEN);
-        String driver = property(DRIVER_KEY_MAVEN);
+    private static UnitDataSourceDescriptor applyOverrides(UnitDataSourceDescriptor connectionInfo) {
+        String adapter = System.getProperty(ADAPTER_KEY_MAVEN);
+        String user = System.getProperty(USER_NAME_KEY_MAVEN);
+        String pass = System.getProperty(PASSWORD_KEY_MAVEN);
+        String url = System.getProperty(URL_KEY_MAVEN);
+        String driver = System.getProperty(DRIVER_KEY_MAVEN);
         // no overrides, do nothing
-        if(adapter == null && user == null && pass == null && url == null && driver == null) {
+        if (adapter == null && user == null && pass == null && url == null && driver == null) {
             return connectionInfo;
         }
 
@@ -227,9 +237,4 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat
 
         return connectionInfo;
     }
-
-    private String property(String name) {
-        String p = System.getProperty(name);
-        return p == null || p.startsWith("$") ? null : p;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java b/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java
similarity index 97%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java
index 0c898e3b1..9f2e85cb9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 import org.apache.cayenne.configuration.DataSourceDescriptor;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java
deleted file mode 100644
index cb75a872a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.unit.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.configuration.runtime.PkGeneratorFactoryProvider;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.PkGenerator;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-
-public class RuntimeCaseDbAdapterProvider implements Provider<JdbcAdapter> {
-    private UnitDataSourceDescriptor dataSourceInfo;
-    private AdhocObjectFactory objectFactory;
-    private PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public RuntimeCaseDbAdapterProvider(
-            @Inject UnitDataSourceDescriptor dataSourceInfo,
-            @Inject AdhocObjectFactory objectFactory,
-            @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
-        this.dataSourceInfo = dataSourceInfo;
-        this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = pkGeneratorProvider;
-    }
-
-    public JdbcAdapter get() throws ConfigurationException {
-        JdbcAdapter jdbcAdapter = objectFactory.newInstance(DbAdapter.class, dataSourceInfo.getAdapterClassName());
-        PkGenerator pkGenerator = pkGeneratorProvider.get(jdbcAdapter);
-        jdbcAdapter.setPkGenerator(pkGenerator);
-        pkGenerator.setAdapter(jdbcAdapter);
-        return jdbcAdapter;
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
index 11b8dce4d..35636964d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.access.types.*;
 import org.apache.cayenne.configuration.ConfigurationNameMapper;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.DataMapLoader;
-import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
 import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
@@ -39,7 +38,6 @@ import org.apache.cayenne.configuration.xml.HandlerFactory;
 import org.apache.cayenne.configuration.xml.NoopDataChannelMetaData;
 import org.apache.cayenne.configuration.xml.XMLDataMapLoader;
 import org.apache.cayenne.configuration.xml.XMLReaderProvider;
-import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.JdbcPkGenerator;
 import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.dba.db2.DB2Adapter;
@@ -65,11 +63,8 @@ import org.apache.cayenne.dba.sybase.SybasePkGenerator;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.ClassLoaderManager;
-import org.apache.cayenne.di.DIRuntimeException;
-import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Key;
 import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
 import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
 import org.apache.cayenne.log.JdbcEventLogger;
@@ -78,13 +73,6 @@ import org.apache.cayenne.reflect.generic.DefaultValueComparisonStrategyFactory;
 import org.apache.cayenne.reflect.generic.ValueComparisonStrategyFactory;
 import org.apache.cayenne.resource.ClassLoaderResourceLocator;
 import org.apache.cayenne.resource.ResourceLocator;
-import org.apache.cayenne.unit.testcontainers.Db2ContainerProvider;
-import org.apache.cayenne.unit.testcontainers.MariaDbContainerProvider;
-import org.apache.cayenne.unit.testcontainers.MysqlContainerProvider;
-import org.apache.cayenne.unit.testcontainers.OracleContainerProvider;
-import org.apache.cayenne.unit.testcontainers.PostgresContainerProvider;
-import org.apache.cayenne.unit.testcontainers.SqlServerContainerProvider;
-import org.apache.cayenne.unit.testcontainers.TestContainerProvider;
 import org.xml.sax.XMLReader;
 
 import java.util.Calendar;
@@ -150,26 +138,6 @@ public class RuntimeCaseModule implements Module {
         binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
         binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
 
-        binder.bindMap(TestContainerProvider.class)
-                .put("mysql", MysqlContainerProvider.class)
-                .put("mariadb", MariaDbContainerProvider.class)
-                .put("postgres", PostgresContainerProvider.class)
-                .put("sqlserver", SqlServerContainerProvider.class)
-                .put("oracle", OracleContainerProvider.class)
-                .put("db2", Db2ContainerProvider.class);
-
-        binder.bind(UnitDataSourceDescriptor.class).toProvider(RuntimeCaseDataSourceDescriptorProvider.class);
-        binder.bind(DataSourceDescriptor.class).toProviderInstance(new Provider<>() {
-            @Inject
-            UnitDataSourceDescriptor unitDataSourceDescriptor;
-
-            @Override
-            public DataSourceDescriptor get() throws DIRuntimeException {
-                return unitDataSourceDescriptor;
-            }
-        });
-        binder.bind(DbAdapter.class).toProvider(RuntimeCaseDbAdapterProvider.class);
-
         // this factory is a hack that allows to inject to DbAdapters loaded outside of
         // server runtime... BatchQueryBuilderFactory is hardcoded and whatever is placed
         // in the CoreModule is ignored


(cayenne) 01/03: removing unused test mappings

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit d1f3d7c8e36d2306ec0fe32cd70192f0cd903d53
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sat May 16 15:23:29 2026 -0400

    removing unused test mappings
---
 .../testdo/deleterules/ClientDeleteCascade.java    |  28 ----
 .../testdo/deleterules/ClientDeleteDeny.java       |  28 ----
 .../testdo/deleterules/ClientDeleteNullify.java    |  28 ----
 .../testdo/deleterules/ClientDeleteRule.java       |  28 ----
 .../cayenne/testdo/deleterules/DeleteCascade.java  |  28 ----
 .../cayenne/testdo/deleterules/DeleteDeny.java     |  28 ----
 .../cayenne/testdo/deleterules/DeleteNullify.java  |  28 ----
 .../cayenne/testdo/deleterules/DeleteRule.java     |  28 ----
 .../deleterules/auto/_ClientDeleteCascade.java     |  56 -------
 .../testdo/deleterules/auto/_ClientDeleteDeny.java |  56 -------
 .../deleterules/auto/_ClientDeleteNullify.java     |  56 -------
 .../testdo/deleterules/auto/_ClientDeleteRule.java | 114 --------------
 .../testdo/deleterules/auto/_DeleteCascade.java    | 112 --------------
 .../testdo/deleterules/auto/_DeleteDeny.java       | 112 --------------
 .../testdo/deleterules/auto/_DeleteNullify.java    | 112 --------------
 .../testdo/deleterules/auto/_DeleteRule.java       | 164 ---------------------
 .../testdo/lifecycles/ClientLifecycles.java        |  28 ----
 .../cayenne/testdo/lifecycles/Lifecycles.java      |  25 ----
 .../testdo/lifecycles/auto/_ClientLifecycles.java  |  37 -----
 .../testdo/lifecycles/auto/_Lifecycles.java        |  93 ------------
 .../cayenne/testdo/toone/ClientTooneDep.java       |  28 ----
 .../cayenne/testdo/toone/ClientTooneMaster.java    |  28 ----
 .../org/apache/cayenne/testdo/toone/TooneDep.java  |  25 ----
 .../apache/cayenne/testdo/toone/TooneMaster.java   |  25 ----
 .../cayenne/testdo/toone/auto/_ClientTooneDep.java |  33 -----
 .../testdo/toone/auto/_ClientTooneMaster.java      |  33 -----
 .../cayenne/testdo/toone/auto/_TooneDep.java       |  92 ------------
 .../cayenne/testdo/toone/auto/_TooneMaster.java    |  92 ------------
 .../org/apache/cayenne/unit/CayenneTestsEnv.java   |   2 -
 .../org/apache/cayenne/unit/DbSchemaManager.java   |   3 +-
 .../cayenne/unit/runtime/CayenneProjects.java      |   6 -
 cayenne/src/test/resources/cayenne-ALL.xml         |   3 -
 .../src/test/resources/cayenne-delete-rules.xml    |   7 -
 cayenne/src/test/resources/cayenne-lifecycles.xml  |   7 -
 cayenne/src/test/resources/cayenne-toone.xml       |   7 -
 cayenne/src/test/resources/delete-rules.map.xml    |  62 --------
 cayenne/src/test/resources/lifecycles.map.xml      |  14 --
 cayenne/src/test/resources/toone.map.xml           |  23 ---
 38 files changed, 2 insertions(+), 1677 deletions(-)

diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
deleted file mode 100644
index 11fb652da..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteCascade;
-
-/**
- * A persistent class mapped as "DeleteCascade" Cayenne entity.
- */
-public class ClientDeleteCascade extends _ClientDeleteCascade {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
deleted file mode 100644
index 407bb1b62..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteDeny;
-
-/**
- * A persistent class mapped as "DeleteDeny" Cayenne entity.
- */
-public class ClientDeleteDeny extends _ClientDeleteDeny {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
deleted file mode 100644
index 522f6b2b9..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteNullify;
-
-/**
- * A persistent class mapped as "DeleteNullify" Cayenne entity.
- */
-public class ClientDeleteNullify extends _ClientDeleteNullify {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
deleted file mode 100644
index 48f1ed779..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteRule;
-
-/**
- * A persistent class mapped as "DeleteRule" Cayenne entity.
- */
-public class ClientDeleteRule extends _ClientDeleteRule {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
deleted file mode 100644
index 48f6e0c61..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._DeleteCascade;
-
-public class DeleteCascade extends _DeleteCascade {
-
-}
-
-
-
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
deleted file mode 100644
index 180476826..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._DeleteDeny;
-
-public class DeleteDeny extends _DeleteDeny {
-
-}
-
-
-
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
deleted file mode 100644
index f4e8d1d8c..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._DeleteNullify;
-
-public class DeleteNullify extends _DeleteNullify {
-
-}
-
-
-
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
deleted file mode 100644
index 03931ccfa..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.deleterules;
-
-import org.apache.cayenne.testdo.deleterules.auto._DeleteRule;
-
-public class DeleteRule extends _DeleteRule {
-
-}
-
-
-
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
deleted file mode 100644
index 4cc341e2a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
-
-/**
- * A generated persistent class mapped as "DeleteCascade" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientDeleteCascade extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String CASCADE_PROPERTY = "cascade";
-
-    protected String name;
-    protected ValueHolder cascade;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public ClientDeleteRule getCascade() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "cascade", true);
-        }
-
-        return (ClientDeleteRule) cascade.getValue();
-    }
-    public void setCascade(ClientDeleteRule cascade) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "cascade", true);
-        }
-
-        this.cascade.setValue(cascade);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
deleted file mode 100644
index f16dded9d..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
-
-/**
- * A generated persistent class mapped as "DeleteDeny" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientDeleteDeny extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String DENY_PROPERTY = "deny";
-
-    protected String name;
-    protected ValueHolder deny;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public ClientDeleteRule getDeny() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "deny", true);
-        }
-
-        return (ClientDeleteRule) deny.getValue();
-    }
-    public void setDeny(ClientDeleteRule deny) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "deny", true);
-        }
-
-        this.deny.setValue(deny);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
deleted file mode 100644
index 3abc65e27..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
-
-/**
- * A generated persistent class mapped as "DeleteNullify" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientDeleteNullify extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String NULLIFY_PROPERTY = "nullify";
-
-    protected String name;
-    protected ValueHolder nullify;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public ClientDeleteRule getNullify() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "nullify", true);
-        }
-
-        return (ClientDeleteRule) nullify.getValue();
-    }
-    public void setNullify(ClientDeleteRule nullify) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "nullify", true);
-        }
-
-        this.nullify.setValue(nullify);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
deleted file mode 100644
index e42946b46..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteCascade;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteDeny;
-import org.apache.cayenne.testdo.deleterules.ClientDeleteNullify;
-
-import java.util.List;
-
-/**
- * A generated persistent class mapped as "DeleteRule" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientDeleteRule extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-    public static final String FROM_CASCADE_PROPERTY = "fromCascade";
-    public static final String FROM_DENY_PROPERTY = "fromDeny";
-    public static final String FROM_NULLIFY_PROPERTY = "fromNullify";
-
-    protected String name;
-    protected List<ClientDeleteCascade> fromCascade;
-    protected List<ClientDeleteDeny> fromDeny;
-    protected List<ClientDeleteNullify> fromNullify;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-    public List<ClientDeleteCascade> getFromCascade() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromCascade", true);
-        }
-
-        return fromCascade;
-    }
-    public void addToFromCascade(ClientDeleteCascade object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromCascade", true);
-        }
-
-        this.fromCascade.add(object);
-    }
-    public void removeFromFromCascade(ClientDeleteCascade object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromCascade", true);
-        }
-
-        this.fromCascade.remove(object);
-    }
-
-    public List<ClientDeleteDeny> getFromDeny() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromDeny", true);
-        }
-
-        return fromDeny;
-    }
-    public void addToFromDeny(ClientDeleteDeny object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromDeny", true);
-        }
-
-        this.fromDeny.add(object);
-    }
-    public void removeFromFromDeny(ClientDeleteDeny object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromDeny", true);
-        }
-
-        this.fromDeny.remove(object);
-    }
-
-    public List<ClientDeleteNullify> getFromNullify() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromNullify", true);
-        }
-
-        return fromNullify;
-    }
-    public void addToFromNullify(ClientDeleteNullify object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromNullify", true);
-        }
-
-        this.fromNullify.add(object);
-    }
-    public void removeFromFromNullify(ClientDeleteNullify object) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "fromNullify", true);
-        }
-
-        this.fromNullify.remove(object);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
deleted file mode 100644
index fc3b2ca53..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.EntityProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.testdo.deleterules.DeleteCascade;
-import org.apache.cayenne.testdo.deleterules.DeleteRule;
-
-/**
- * Class _DeleteCascade was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _DeleteCascade extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<DeleteCascade> SELF = PropertyFactory.createSelf(DeleteCascade.class);
-
-    public static final NumericIdProperty<Integer> DELETE_CASCADE_ID_PK_PROPERTY = PropertyFactory.createNumericId("DELETE_CASCADE_ID", "DeleteCascade", Integer.class);
-    public static final String DELETE_CASCADE_ID_PK_COLUMN = "DELETE_CASCADE_ID";
-
-    public static final StringProperty<String> NAME = PropertyFactory.createString("name", String.class);
-    public static final EntityProperty<DeleteRule> CASCADE = PropertyFactory.createEntity("cascade", DeleteRule.class);
-
-    protected String name;
-
-    protected Object cascade;
-
-    public void setName(String name) {
-        beforePropertyWrite("name", this.name, name);
-        this.name = name;
-    }
-
-    public String getName() {
-        beforePropertyRead("name");
-        return this.name;
-    }
-
-    public void setCascade(DeleteRule cascade) {
-        setToOneTarget("cascade", cascade, true);
-    }
-
-    public DeleteRule getCascade() {
-        return (DeleteRule)readProperty("cascade");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "name":
-                return this.name;
-            case "cascade":
-                return this.cascade;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "name":
-                this.name = (String)val;
-                break;
-            case "cascade":
-                this.cascade = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.name);
-        out.writeObject(this.cascade);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.name = (String)in.readObject();
-        this.cascade = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
deleted file mode 100644
index 128ee01c7..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteDeny.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.EntityProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.testdo.deleterules.DeleteDeny;
-import org.apache.cayenne.testdo.deleterules.DeleteRule;
-
-/**
- * Class _DeleteDeny was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _DeleteDeny extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<DeleteDeny> SELF = PropertyFactory.createSelf(DeleteDeny.class);
-
-    public static final NumericIdProperty<Integer> DELETE_DENY_ID_PK_PROPERTY = PropertyFactory.createNumericId("DELETE_DENY_ID", "DeleteDeny", Integer.class);
-    public static final String DELETE_DENY_ID_PK_COLUMN = "DELETE_DENY_ID";
-
-    public static final StringProperty<String> NAME = PropertyFactory.createString("name", String.class);
-    public static final EntityProperty<DeleteRule> DENY = PropertyFactory.createEntity("deny", DeleteRule.class);
-
-    protected String name;
-
-    protected Object deny;
-
-    public void setName(String name) {
-        beforePropertyWrite("name", this.name, name);
-        this.name = name;
-    }
-
-    public String getName() {
-        beforePropertyRead("name");
-        return this.name;
-    }
-
-    public void setDeny(DeleteRule deny) {
-        setToOneTarget("deny", deny, true);
-    }
-
-    public DeleteRule getDeny() {
-        return (DeleteRule)readProperty("deny");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "name":
-                return this.name;
-            case "deny":
-                return this.deny;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "name":
-                this.name = (String)val;
-                break;
-            case "deny":
-                this.deny = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.name);
-        out.writeObject(this.deny);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.name = (String)in.readObject();
-        this.deny = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
deleted file mode 100644
index 8f4324e94..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteNullify.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.EntityProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.testdo.deleterules.DeleteNullify;
-import org.apache.cayenne.testdo.deleterules.DeleteRule;
-
-/**
- * Class _DeleteNullify was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _DeleteNullify extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<DeleteNullify> SELF = PropertyFactory.createSelf(DeleteNullify.class);
-
-    public static final NumericIdProperty<Integer> DELETE_NULLIFY_ID_PK_PROPERTY = PropertyFactory.createNumericId("DELETE_NULLIFY_ID", "DeleteNullify", Integer.class);
-    public static final String DELETE_NULLIFY_ID_PK_COLUMN = "DELETE_NULLIFY_ID";
-
-    public static final StringProperty<String> NAME = PropertyFactory.createString("name", String.class);
-    public static final EntityProperty<DeleteRule> NULLIFY = PropertyFactory.createEntity("nullify", DeleteRule.class);
-
-    protected String name;
-
-    protected Object nullify;
-
-    public void setName(String name) {
-        beforePropertyWrite("name", this.name, name);
-        this.name = name;
-    }
-
-    public String getName() {
-        beforePropertyRead("name");
-        return this.name;
-    }
-
-    public void setNullify(DeleteRule nullify) {
-        setToOneTarget("nullify", nullify, true);
-    }
-
-    public DeleteRule getNullify() {
-        return (DeleteRule)readProperty("nullify");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "name":
-                return this.name;
-            case "nullify":
-                return this.nullify;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "name":
-                this.name = (String)val;
-                break;
-            case "nullify":
-                this.nullify = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.name);
-        out.writeObject(this.nullify);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.name = (String)in.readObject();
-        this.nullify = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java b/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
deleted file mode 100644
index 77c485ea8..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteRule.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.apache.cayenne.testdo.deleterules.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.List;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.ListProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.testdo.deleterules.DeleteCascade;
-import org.apache.cayenne.testdo.deleterules.DeleteDeny;
-import org.apache.cayenne.testdo.deleterules.DeleteNullify;
-import org.apache.cayenne.testdo.deleterules.DeleteRule;
-
-/**
- * Class _DeleteRule was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _DeleteRule extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<DeleteRule> SELF = PropertyFactory.createSelf(DeleteRule.class);
-
-    public static final NumericIdProperty<Integer> DELETE_RULE_ID_PK_PROPERTY = PropertyFactory.createNumericId("DELETE_RULE_ID", "DeleteRule", Integer.class);
-    public static final String DELETE_RULE_ID_PK_COLUMN = "DELETE_RULE_ID";
-
-    public static final StringProperty<String> NAME = PropertyFactory.createString("name", String.class);
-    public static final ListProperty<DeleteCascade> FROM_CASCADE = PropertyFactory.createList("fromCascade", DeleteCascade.class);
-    public static final ListProperty<DeleteDeny> FROM_DENY = PropertyFactory.createList("fromDeny", DeleteDeny.class);
-    public static final ListProperty<DeleteNullify> FROM_NULLIFY = PropertyFactory.createList("fromNullify", DeleteNullify.class);
-
-    protected String name;
-
-    protected Object fromCascade;
-    protected Object fromDeny;
-    protected Object fromNullify;
-
-    public void setName(String name) {
-        beforePropertyWrite("name", this.name, name);
-        this.name = name;
-    }
-
-    public String getName() {
-        beforePropertyRead("name");
-        return this.name;
-    }
-
-    public void addToFromCascade(DeleteCascade obj) {
-        addToManyTarget("fromCascade", obj, true);
-    }
-
-    public void removeFromFromCascade(DeleteCascade obj) {
-        removeToManyTarget("fromCascade", obj, true);
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<DeleteCascade> getFromCascade() {
-        return (List<DeleteCascade>)readProperty("fromCascade");
-    }
-
-    public void addToFromDeny(DeleteDeny obj) {
-        addToManyTarget("fromDeny", obj, true);
-    }
-
-    public void removeFromFromDeny(DeleteDeny obj) {
-        removeToManyTarget("fromDeny", obj, true);
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<DeleteDeny> getFromDeny() {
-        return (List<DeleteDeny>)readProperty("fromDeny");
-    }
-
-    public void addToFromNullify(DeleteNullify obj) {
-        addToManyTarget("fromNullify", obj, true);
-    }
-
-    public void removeFromFromNullify(DeleteNullify obj) {
-        removeToManyTarget("fromNullify", obj, true);
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<DeleteNullify> getFromNullify() {
-        return (List<DeleteNullify>)readProperty("fromNullify");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "name":
-                return this.name;
-            case "fromCascade":
-                return this.fromCascade;
-            case "fromDeny":
-                return this.fromDeny;
-            case "fromNullify":
-                return this.fromNullify;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "name":
-                this.name = (String)val;
-                break;
-            case "fromCascade":
-                this.fromCascade = val;
-                break;
-            case "fromDeny":
-                this.fromDeny = val;
-                break;
-            case "fromNullify":
-                this.fromNullify = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.name);
-        out.writeObject(this.fromCascade);
-        out.writeObject(this.fromDeny);
-        out.writeObject(this.fromNullify);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.name = (String)in.readObject();
-        this.fromCascade = in.readObject();
-        this.fromDeny = in.readObject();
-        this.fromNullify = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/ClientLifecycles.java b/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/ClientLifecycles.java
deleted file mode 100644
index af89b66f9..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/ClientLifecycles.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.lifecycles;
-
-import org.apache.cayenne.testdo.lifecycles.auto._ClientLifecycles;
-
-/**
- * A persistent class mapped as "Lifecycles" Cayenne entity.
- */
-public class ClientLifecycles extends _ClientLifecycles {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/Lifecycles.java b/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/Lifecycles.java
deleted file mode 100644
index c1f8344ae..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/Lifecycles.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.lifecycles;
-
-import org.apache.cayenne.testdo.lifecycles.auto._Lifecycles;
-
-public class Lifecycles extends _Lifecycles {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_ClientLifecycles.java b/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_ClientLifecycles.java
deleted file mode 100644
index fa9ccd29b..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_ClientLifecycles.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.cayenne.testdo.lifecycles.auto;
-
-import org.apache.cayenne.PersistentObject;
-
-/**
- * A generated persistent class mapped as "Lifecycles" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientLifecycles extends PersistentObject {
-
-    public static final String NAME_PROPERTY = "name";
-
-    protected String name;
-
-    public String getName() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        return name;
-    }
-    public void setName(String name) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "name", false);
-        }
-
-        Object oldValue = this.name;
-        this.name = name;
-
-        // notify objectContext about simple property change
-        if(objectContext != null) {
-            objectContext.propertyChanged(this, "name", oldValue, name);
-        }
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java b/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
deleted file mode 100644
index 327845dfb..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/lifecycles/auto/_Lifecycles.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.apache.cayenne.testdo.lifecycles.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.testdo.lifecycles.Lifecycles;
-
-/**
- * Class _Lifecycles was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _Lifecycles extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<Lifecycles> SELF = PropertyFactory.createSelf(Lifecycles.class);
-
-    public static final NumericIdProperty<Integer> ID_PK_PROPERTY = PropertyFactory.createNumericId("ID", "Lifecycles", Integer.class);
-    public static final String ID_PK_COLUMN = "ID";
-
-    public static final StringProperty<String> NAME = PropertyFactory.createString("name", String.class);
-
-    protected String name;
-
-
-    public void setName(String name) {
-        beforePropertyWrite("name", this.name, name);
-        this.name = name;
-    }
-
-    public String getName() {
-        beforePropertyRead("name");
-        return this.name;
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "name":
-                return this.name;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "name":
-                this.name = (String)val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.name);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.name = (String)in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneDep.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneDep.java
deleted file mode 100644
index 08310dcae..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneDep.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.toone;
-
-import org.apache.cayenne.testdo.toone.auto._ClientTooneDep;
-
-/**
- * A persistent class mapped as "TooneDep" Cayenne entity.
- */
-public class ClientTooneDep extends _ClientTooneDep {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneMaster.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneMaster.java
deleted file mode 100644
index 860ac763a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/ClientTooneMaster.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.toone;
-
-import org.apache.cayenne.testdo.toone.auto._ClientTooneMaster;
-
-/**
- * A persistent class mapped as "TooneMaster" Cayenne entity.
- */
-public class ClientTooneMaster extends _ClientTooneMaster {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneDep.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneDep.java
deleted file mode 100644
index 763f3cb85..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneDep.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.toone;
-
-import org.apache.cayenne.testdo.toone.auto._TooneDep;
-
-public class TooneDep extends _TooneDep {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneMaster.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneMaster.java
deleted file mode 100644
index 3be45c1f7..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/TooneMaster.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.testdo.toone;
-
-import org.apache.cayenne.testdo.toone.auto._TooneMaster;
-
-public class TooneMaster extends _TooneMaster {
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneDep.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneDep.java
deleted file mode 100644
index f70c43e4a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneDep.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.cayenne.testdo.toone.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.toone.ClientTooneMaster;
-
-/**
- * A generated persistent class mapped as "TooneDep" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientTooneDep extends PersistentObject {
-
-    public static final String TO_MASTER_PROPERTY = "toMaster";
-
-    protected ValueHolder toMaster;
-
-    public ClientTooneMaster getToMaster() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "toMaster", true);
-        }
-
-        return (ClientTooneMaster) toMaster.getValue();
-    }
-    public void setToMaster(ClientTooneMaster toMaster) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "toMaster", true);
-        }
-
-        this.toMaster.setValue(toMaster);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneMaster.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneMaster.java
deleted file mode 100644
index 95cf1617e..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_ClientTooneMaster.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.cayenne.testdo.toone.auto;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.testdo.toone.ClientTooneDep;
-
-/**
- * A generated persistent class mapped as "TooneMaster" Cayenne entity. It is a good idea to
- * avoid changing this class manually, since it will be overwritten next time code is
- * regenerated. If you need to make any customizations, put them in a subclass.
- */
-public abstract class _ClientTooneMaster extends PersistentObject {
-
-    public static final String TO_DEPENDENT_PROPERTY = "toDependent";
-
-    protected ValueHolder toDependent;
-
-    public ClientTooneDep getToDependent() {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "toDependent", true);
-        }
-
-        return (ClientTooneDep) toDependent.getValue();
-    }
-    public void setToDependent(ClientTooneDep toDependent) {
-        if(objectContext != null) {
-            objectContext.prepareForAccess(this, "toDependent", true);
-        }
-
-        this.toDependent.setValue(toDependent);
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
deleted file mode 100644
index 10badc341..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneDep.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.cayenne.testdo.toone.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.EntityProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.testdo.toone.TooneDep;
-import org.apache.cayenne.testdo.toone.TooneMaster;
-
-/**
- * Class _TooneDep was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _TooneDep extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<TooneDep> SELF = PropertyFactory.createSelf(TooneDep.class);
-
-    public static final NumericIdProperty<Integer> ID_PK_PROPERTY = PropertyFactory.createNumericId("ID", "TooneDep", Integer.class);
-    public static final String ID_PK_COLUMN = "ID";
-
-    public static final EntityProperty<TooneMaster> TO_MASTER = PropertyFactory.createEntity("toMaster", TooneMaster.class);
-
-
-    protected Object toMaster;
-
-    public void setToMaster(TooneMaster toMaster) {
-        setToOneTarget("toMaster", toMaster, true);
-    }
-
-    public TooneMaster getToMaster() {
-        return (TooneMaster)readProperty("toMaster");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "toMaster":
-                return this.toMaster;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "toMaster":
-                this.toMaster = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.toMaster);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.toMaster = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java b/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
deleted file mode 100644
index 5975078a7..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/testdo/toone/auto/_TooneMaster.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.cayenne.testdo.toone.auto;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.apache.cayenne.PersistentObject;
-import org.apache.cayenne.exp.property.EntityProperty;
-import org.apache.cayenne.exp.property.NumericIdProperty;
-import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.exp.property.SelfProperty;
-import org.apache.cayenne.testdo.toone.TooneDep;
-import org.apache.cayenne.testdo.toone.TooneMaster;
-
-/**
- * Class _TooneMaster was generated by Cayenne.
- * It is probably a good idea to avoid changing this class manually,
- * since it may be overwritten next time code is regenerated.
- * If you need to make any customizations, please use subclass.
- */
-public abstract class _TooneMaster extends PersistentObject {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final SelfProperty<TooneMaster> SELF = PropertyFactory.createSelf(TooneMaster.class);
-
-    public static final NumericIdProperty<Integer> ID_PK_PROPERTY = PropertyFactory.createNumericId("ID", "TooneMaster", Integer.class);
-    public static final String ID_PK_COLUMN = "ID";
-
-    public static final EntityProperty<TooneDep> TO_DEPENDENT = PropertyFactory.createEntity("toDependent", TooneDep.class);
-
-
-    protected Object toDependent;
-
-    public void setToDependent(TooneDep toDependent) {
-        setToOneTarget("toDependent", toDependent, true);
-    }
-
-    public TooneDep getToDependent() {
-        return (TooneDep)readProperty("toDependent");
-    }
-
-    @Override
-    public Object readPropertyDirectly(String propName) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch(propName) {
-            case "toDependent":
-                return this.toDependent;
-            default:
-                return super.readPropertyDirectly(propName);
-        }
-    }
-
-    @Override
-    public void writePropertyDirectly(String propName, Object val) {
-        if(propName == null) {
-            throw new IllegalArgumentException();
-        }
-
-        switch (propName) {
-            case "toDependent":
-                this.toDependent = val;
-                break;
-            default:
-                super.writePropertyDirectly(propName, val);
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        writeSerialized(out);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        readSerialized(in);
-    }
-
-    @Override
-    protected void writeState(ObjectOutputStream out) throws IOException {
-        super.writeState(out);
-        out.writeObject(this.toDependent);
-    }
-
-    @Override
-    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        super.readState(in);
-        this.toDependent = in.readObject();
-    }
-
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
index a91bae33a..a20cac8f3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -82,8 +82,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
                 .build();
 
         // "cayenne-ALL.xml" is a special synthetic project file that includes all test DataMaps
-        // TODO: support for multiple schemas, so that DDL operation scope (such as dropping PK)
-        //   can be isolated from the wider test environment
         COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dataSource);
         COMMON_SCHEMA.rebuildSchema();
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
index 300c6a1ae..592573fb6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
@@ -50,7 +50,8 @@ import java.util.Map;
 import java.util.Set;
 
 /**
- * Maps a full physical DB namespace (schema or database) that can be shared between many test DataMaps.
+ * Maps a full physical DB namespace (schema or database) that can be shared between many test DataMaps. Holds its
+ * DataSource.
  */
 public class DbSchemaManager {
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java
index 84abc159d..968dfd3aa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java
@@ -21,15 +21,11 @@ package org.apache.cayenne.unit.runtime;
 
 public class CayenneProjects {
 
-    // known runtimes... unit tests may reuse these with @UseCayenneRuntime
-    // annotation or can define their own on the fly
-    // (TODO: how would that work with the global schema setup?)
     public static final String ARRAY_TYPE_PROJECT = "cayenne-array-type.xml";
     public static final String BINARY_PK_PROJECT = "cayenne-binary-pk.xml";
     public static final String CAY_2032 = "cayenne-cay-2032.xml";
     public static final String COMPOUND_PROJECT = "cayenne-compound.xml";
     public static final String DATE_TIME_PROJECT = "cayenne-date-time.xml";
-    public static final String DELETE_RULES_PROJECT = "cayenne-delete-rules.xml";
     public static final String EMBEDDABLE_PROJECT = "cayenne-embeddable.xml";
     public static final String EMPTY_PROJECT = "cayenne-empty.xml";
     public static final String ENUM_PROJECT = "cayenne-enum.xml";
@@ -42,7 +38,6 @@ public class CayenneProjects {
     public static final String JSON_PROJECT = "cayenne-json.xml";
     public static final String LEGACY_DATE_TIME_PROJECT = "cayenne-legacy-date-time.xml";
     public static final String LIFECYCLE_CALLBACKS_ORDER_PROJECT = "cayenne-lifecycle-callbacks-order.xml";
-    public static final String LIFECYCLES_PROJECT = "cayenne-lifecycles.xml";
     public static final String LOB_PROJECT = "cayenne-lob.xml";
     public static final String LOCKING_PROJECT = "cayenne-locking.xml";
     public static final String MAP_TO_MANY_PROJECT = "cayenne-map-to-many.xml";
@@ -76,7 +71,6 @@ public class CayenneProjects {
     public static final String TABLE_PRIMITIVES_PROJECT = "cayenne-table-primitives.xml";
     public static final String TESTMAP_PROJECT = "cayenne-testmap.xml";
     public static final String THINGS_PROJECT = "cayenne-things.xml";
-    public static final String TOONE_PROJECT = "cayenne-toone.xml";
     public static final String UNSUPPORTED_DISTINCT_TYPES_PROJECT = "cayenne-unsupported-distinct-types.xml";
     public static final String UUID_PROJECT = "cayenne-uuid.xml";
     public static final String CUSTOM_NAME_PROJECT = "custom-name-file.xml";
diff --git a/cayenne/src/test/resources/cayenne-ALL.xml b/cayenne/src/test/resources/cayenne-ALL.xml
index b3035d0f0..15488c70e 100644
--- a/cayenne/src/test/resources/cayenne-ALL.xml
+++ b/cayenne/src/test/resources/cayenne-ALL.xml
@@ -38,11 +38,8 @@
 	<map name="uuid"/>
 	<map name="multi-tier"/>
 	<map name="reflexive"/>
-	<map name="delete-rules"/>
 	<map name="lifecycle-callbacks-order"/>
-	<map name="lifecycles"/>
 	<map name="map-to-many"/>
-	<map name="toone"/>
 	<map name="meaningful-pk"/>
 	<map name="table-primitives"/>
 	<map name="generic"/>
diff --git a/cayenne/src/test/resources/cayenne-delete-rules.xml b/cayenne/src/test/resources/cayenne-delete-rules.xml
deleted file mode 100644
index a89f73d20..000000000
--- a/cayenne/src/test/resources/cayenne-delete-rules.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domain xmlns="http://cayenne.apache.org/schema/12/domain"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/domain https://cayenne.apache.org/schema/12/domain.xsd"
-	 project-version="12">
-	<map name="delete-rules"/>
-</domain>
diff --git a/cayenne/src/test/resources/cayenne-lifecycles.xml b/cayenne/src/test/resources/cayenne-lifecycles.xml
deleted file mode 100644
index d23ecf682..000000000
--- a/cayenne/src/test/resources/cayenne-lifecycles.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domain xmlns="http://cayenne.apache.org/schema/12/domain"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/domain https://cayenne.apache.org/schema/12/domain.xsd"
-	 project-version="12">
-	<map name="lifecycles"/>
-</domain>
diff --git a/cayenne/src/test/resources/cayenne-toone.xml b/cayenne/src/test/resources/cayenne-toone.xml
deleted file mode 100644
index e337d16f2..000000000
--- a/cayenne/src/test/resources/cayenne-toone.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<domain xmlns="http://cayenne.apache.org/schema/12/domain"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/domain https://cayenne.apache.org/schema/12/domain.xsd"
-	 project-version="12">
-	<map name="toone"/>
-</domain>
diff --git a/cayenne/src/test/resources/delete-rules.map.xml b/cayenne/src/test/resources/delete-rules.map.xml
deleted file mode 100644
index 78405d4f4..000000000
--- a/cayenne/src/test/resources/delete-rules.map.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<data-map xmlns="http://cayenne.apache.org/schema/12/modelMap"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/modelMap https://cayenne.apache.org/schema/12/modelMap.xsd"
-	 project-version="12">
-	<property name="defaultPackage" value="org.apache.cayenne.testdo.deleterules"/>
-	<db-entity name="DELETE_CASCADE">
-		<db-attribute name="DELETE_CASCADE_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="DELETE_RULE_ID" type="INTEGER"/>
-		<db-attribute name="NAME" type="VARCHAR" length="200"/>
-	</db-entity>
-	<db-entity name="DELETE_DENY">
-		<db-attribute name="DELETE_DENY_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="DELETE_RULE_ID" type="INTEGER"/>
-		<db-attribute name="NAME" type="VARCHAR" length="200"/>
-	</db-entity>
-	<db-entity name="DELETE_NULLIFY">
-		<db-attribute name="DELETE_NULLIFY_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="DELETE_RULE_ID" type="INTEGER"/>
-		<db-attribute name="NAME" type="VARCHAR" length="200"/>
-	</db-entity>
-	<db-entity name="DELETE_RULE">
-		<db-attribute name="DELETE_RULE_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="NAME" type="VARCHAR" length="200"/>
-	</db-entity>
-	<obj-entity name="DeleteCascade" className="org.apache.cayenne.testdo.deleterules.DeleteCascade" dbEntityName="DELETE_CASCADE">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<obj-entity name="DeleteDeny" className="org.apache.cayenne.testdo.deleterules.DeleteDeny" dbEntityName="DELETE_DENY">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<obj-entity name="DeleteNullify" className="org.apache.cayenne.testdo.deleterules.DeleteNullify" dbEntityName="DELETE_NULLIFY">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<obj-entity name="DeleteRule" className="org.apache.cayenne.testdo.deleterules.DeleteRule" dbEntityName="DELETE_RULE">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-	<db-relationship name="cascade" source="DELETE_CASCADE" target="DELETE_RULE">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<db-relationship name="deny" source="DELETE_DENY" target="DELETE_RULE">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<db-relationship name="nullify" source="DELETE_NULLIFY" target="DELETE_RULE">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<db-relationship name="fromCascade" source="DELETE_RULE" target="DELETE_CASCADE" toMany="true">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<db-relationship name="fromDeny" source="DELETE_RULE" target="DELETE_DENY" toMany="true">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<db-relationship name="fromNullify" source="DELETE_RULE" target="DELETE_NULLIFY" toMany="true">
-		<db-attribute-pair source="DELETE_RULE_ID" target="DELETE_RULE_ID"/>
-	</db-relationship>
-	<obj-relationship name="cascade" source="DeleteCascade" target="DeleteRule" deleteRule="Cascade" db-relationship-path="cascade"/>
-	<obj-relationship name="deny" source="DeleteDeny" target="DeleteRule" deleteRule="Deny" db-relationship-path="deny"/>
-	<obj-relationship name="nullify" source="DeleteNullify" target="DeleteRule" deleteRule="Nullify" db-relationship-path="nullify"/>
-	<obj-relationship name="fromCascade" source="DeleteRule" target="DeleteCascade" db-relationship-path="fromCascade"/>
-	<obj-relationship name="fromDeny" source="DeleteRule" target="DeleteDeny" db-relationship-path="fromDeny"/>
-	<obj-relationship name="fromNullify" source="DeleteRule" target="DeleteNullify" db-relationship-path="fromNullify"/>
-</data-map>
diff --git a/cayenne/src/test/resources/lifecycles.map.xml b/cayenne/src/test/resources/lifecycles.map.xml
deleted file mode 100644
index 9b7ab5bc6..000000000
--- a/cayenne/src/test/resources/lifecycles.map.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<data-map xmlns="http://cayenne.apache.org/schema/12/modelMap"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/modelMap https://cayenne.apache.org/schema/12/modelMap.xsd"
-	 project-version="12">
-	<property name="defaultPackage" value="org.apache.cayenne.testdo.lifecycles"/>
-	<db-entity name="LIFECYCLES">
-		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-		<db-attribute name="NAME" type="VARCHAR" isMandatory="true" length="100"/>
-	</db-entity>
-	<obj-entity name="Lifecycles" className="org.apache.cayenne.testdo.lifecycles.Lifecycles" dbEntityName="LIFECYCLES">
-		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
-	</obj-entity>
-</data-map>
diff --git a/cayenne/src/test/resources/toone.map.xml b/cayenne/src/test/resources/toone.map.xml
deleted file mode 100644
index 1d4003c10..000000000
--- a/cayenne/src/test/resources/toone.map.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<data-map xmlns="http://cayenne.apache.org/schema/12/modelMap"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://cayenne.apache.org/schema/12/modelMap https://cayenne.apache.org/schema/12/modelMap.xsd"
-	 project-version="12">
-	<property name="defaultPackage" value="org.apache.cayenne.testdo.toone"/>
-	<db-entity name="TOONE_DEP">
-		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-	</db-entity>
-	<db-entity name="TOONE_MASTER">
-		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
-	</db-entity>
-	<obj-entity name="TooneDep" className="org.apache.cayenne.testdo.toone.TooneDep" dbEntityName="TOONE_DEP"/>
-	<obj-entity name="TooneMaster" className="org.apache.cayenne.testdo.toone.TooneMaster" dbEntityName="TOONE_MASTER"/>
-	<db-relationship name="toMaster" source="TOONE_DEP" target="TOONE_MASTER">
-		<db-attribute-pair source="ID" target="ID"/>
-	</db-relationship>
-	<db-relationship name="toDependent" source="TOONE_MASTER" target="TOONE_DEP" toDependentPK="true">
-		<db-attribute-pair source="ID" target="ID"/>
-	</db-relationship>
-	<obj-relationship name="toMaster" source="TooneDep" target="TooneMaster" deleteRule="Nullify" db-relationship-path="toMaster"/>
-	<obj-relationship name="toDependent" source="TooneMaster" target="TooneDep" deleteRule="Cascade" db-relationship-path="toDependent"/>
-</data-map>


(cayenne) 03/03: removing unused test mappings

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit f2d7d299b3681fab8653132e5ffe1f8931de4800
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sat May 16 15:23:29 2026 -0400

    removing unused test mappings
    
    BACKWARDS COMPAT NOTES: no more "adapter" support in test configuration. AutoAdapter is used throughout
---
 .../org/apache/cayenne/dbsync/merge/MergeCase.java |   2 +-
 .../dbsync/reverse/dbload/BaseLoaderIT.java        |   2 +-
 .../cayenne/dbsync/reverse/dbload/DbLoaderIT.java  |   2 +-
 .../cayenne/jcache/CayenneJCacheModuleIT.java      |   2 +-
 .../cayenne/CDOCollectionRelationshipIT.java       |   2 +-
 .../java/org/apache/cayenne/CDOMany2OneIT.java     |   2 +-
 .../org/apache/cayenne/CDOMany2OneNoRevIT.java     |   2 +-
 .../org/apache/cayenne/CDOMapRelationshipIT.java   |   2 +-
 .../java/org/apache/cayenne/CDOOne2ManyIT.java     |   2 +-
 .../java/org/apache/cayenne/CDOOneToManyFKIT.java  |   2 +-
 .../java/org/apache/cayenne/CDOOneToOneFKIT.java   |   2 +-
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java |   2 +-
 .../apache/cayenne/CDOReflexiveRelDeleteIT.java    |   2 +-
 .../cayenne/CDOReflexiveRelICustomSorterIT.java    |   2 +-
 .../java/org/apache/cayenne/CDOReflexiveRelIT.java |   2 +-
 .../org/apache/cayenne/CDOSetRelationshipIT.java   |   2 +-
 .../test/java/org/apache/cayenne/Cay2412IT.java    |   2 +-
 .../java/org/apache/cayenne/CayenneCompoundIT.java |   2 +-
 .../java/org/apache/cayenne/CayenneDOTestBase.java |   2 +-
 .../test/java/org/apache/cayenne/CayenneIT.java    |   2 +-
 .../CayennePersistentObjectFlattenedRelIT.java     |   2 +-
 .../apache/cayenne/CayennePersistentObjectIT.java  |   2 +-
 .../CayennePersistentObjectInContextIT.java        |   2 +-
 .../CayennePersistentObjectReflexiveIT.java        |   2 +-
 .../CayennePersistentObjectRelationshipsIT.java    |   2 +-
 ...yennePersistentObjectSetToManyCollectionIT.java |   2 +-
 .../CayennePersistentObjectSetToManyListIT.java    |   2 +-
 .../CayennePersistentObjectSetToManyMapIT.java     |   2 +-
 .../CayennePersistentObjectSetToManySetIT.java     |   2 +-
 .../CayennePersistentObjectValidationIT.java       |   2 +-
 .../org/apache/cayenne/CircularDependencyIT.java   |   2 +-
 .../org/apache/cayenne/CompoundPkChangeIT.java     |   2 +-
 .../apache/cayenne/DataContextConcurrencyIT.java   |   2 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |   2 +-
 .../apache/cayenne/FlattenedRelationshipsIT.java   |   2 +-
 .../java/org/apache/cayenne/GenericMappingIT.java  |   2 +-
 .../apache/cayenne/HybridPersistentObjectIT.java   |   2 +-
 .../java/org/apache/cayenne/LazyAttributesIT.java  |   2 +-
 .../java/org/apache/cayenne/ManyToManyJoinIT.java  |   2 +-
 .../org/apache/cayenne/ManyToManyNoJoinIT.java     |   2 +-
 .../java/org/apache/cayenne/MeaningfulFKIT.java    |   2 +-
 .../org/apache/cayenne/OneWayRelationshipsIT.java  |   2 +-
 .../cayenne/PersistenceByReachabilityIT.java       |   2 +-
 .../org/apache/cayenne/PersistentObjectIT.java     |   2 +-
 .../cayenne/PersistentObjectSerializationIT.java   |   2 +-
 .../java/org/apache/cayenne/PregeneratedPKIT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2509IT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2723IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2032IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2641IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2666IT.java  |   2 +-
 .../cayenne/access/DataContextArrayTypeIT.java     |   2 +-
 .../cayenne/access/DataContextBinaryPKIT.java      |   2 +-
 .../apache/cayenne/access/DataContextBlobIT.java   |   2 +-
 .../cayenne/access/DataContextCallbacksIT.java     |   2 +-
 .../apache/cayenne/access/DataContextCharPKIT.java |   2 +-
 .../cayenne/access/DataContextCharTypeIT.java      |   2 +-
 .../apache/cayenne/access/DataContextClobIT.java   |   2 +-
 .../apache/cayenne/access/DataContextCommitIT.java |   2 +-
 .../cayenne/access/DataContextCompoundRelIT.java   |   2 +-
 .../cayenne/access/DataContextCrossDBIT.java       |   2 +-
 .../access/DataContextDataChannelEventsIT.java     |   2 +-
 .../access/DataContextDecoratedStackIT.java        |   2 +-
 .../cayenne/access/DataContextDelegateIT.java      |   2 +-
 .../access/DataContextDelegateSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextDeleteRulesIT.java   |   2 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |   2 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |   2 +-
 .../access/DataContextEJBQLArrayResultIT.java      |   2 +-
 .../access/DataContextEJBQLConditionsIT.java       |   2 +-
 ...ontextEJBQLDateTimeFunctionalExpressionsIT.java |   2 +-
 .../cayenne/access/DataContextEJBQLDeleteIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLDeletePKIT.java |   2 +-
 .../access/DataContextEJBQLFetchJoinIT.java        |   2 +-
 .../DataContextEJBQLFlattenedRelationshipsIT.java  |   2 +-
 .../DataContextEJBQLFunctionalExpressionsIT.java   |   2 +-
 .../access/DataContextEJBQLGroupByHavingIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLIsNullIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLJoinsIT.java    |   2 +-
 .../DataContextEJBQLNumericalFunctionalIT.java     |   2 +-
 .../cayenne/access/DataContextEJBQLOrderByIT.java  |   2 +-
 .../access/DataContextEJBQLQueryCompoundIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLQueryIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLSubqueryIT.java |   2 +-
 .../access/DataContextEJBQLUpdateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLUpdateIT.java   |   2 +-
 ...tyWithMeaningfulPKAndCustomDbRowOpSorterIT.java |   2 +-
 .../DataContextEntityWithMeaningfulPKIT.java       |   2 +-
 .../DataContextExtendedTypeOperationsIT.java       |   2 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |   2 +-
 .../access/DataContextFlattenedAttributesIT.java   |   2 +-
 .../org/apache/cayenne/access/DataContextIT.java   |   2 +-
 .../cayenne/access/DataContextIteratedQueryIT.java |   2 +-
 .../cayenne/access/DataContextJoinAliasesIT.java   |   2 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |   2 +-
 .../apache/cayenne/access/DataContextNoPkIT.java   |   2 +-
 .../cayenne/access/DataContextObjectIdQueryIT.java |   2 +-
 .../access/DataContextObjectTrackingIT.java        |   2 +-
 .../cayenne/access/DataContextOrderingIT.java      |   2 +-
 .../cayenne/access/DataContextOuterJoinsIT.java    |   2 +-
 .../access/DataContextPaginatedQueryIT.java        |   2 +-
 .../access/DataContextPerformQueryAPIIT.java       |   2 +-
 .../access/DataContextPrefetchExtras1IT.java       |   2 +-
 .../access/DataContextPrefetchExtrasIT.java        |   2 +-
 .../cayenne/access/DataContextPrefetchIT.java      |   2 +-
 .../access/DataContextPrefetchMultistepIT.java     |   2 +-
 .../DataContextPrefetchQualifierOverlapIT.java     |   2 +-
 .../access/DataContextProcedureQueryIT.java        |   2 +-
 .../cayenne/access/DataContextQueryCachingIT.java  |   2 +-
 .../cayenne/access/DataContextQueryChainIT.java    |   2 +-
 .../cayenne/access/DataContextRefreshQueryIT.java  |   2 +-
 .../cayenne/access/DataContextRefreshingIT.java    |   2 +-
 .../access/DataContextRelationshipQueryIT.java     |   2 +-
 .../cayenne/access/DataContextRollbackIT.java      |   2 +-
 .../access/DataContextSQLTemplateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |   2 +-
 .../cayenne/access/DataContextSerializationIT.java |   2 +-
 .../access/DataContextSharedCacheEmpiricIT.java    |   2 +-
 .../cayenne/access/DataContextSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextValidationIT.java    |   2 +-
 .../cayenne/access/DataDomainCallbacksIT.java      |   2 +-
 .../apache/cayenne/access/DataDomainFiltersIT.java |   2 +-
 .../org/apache/cayenne/access/DataDomainIT.java    |   2 +-
 .../cayenne/access/DataDomainQueryActionIT.java    |   2 +-
 .../java/org/apache/cayenne/access/DataNodeIT.java |   2 +-
 .../apache/cayenne/access/DataNodeQueriesIT.java   |   2 +-
 .../cayenne/access/DataNodeQueryExceptionsIT.java  |   2 +-
 .../org/apache/cayenne/access/DataRowStoreIT.java  |   2 +-
 .../org/apache/cayenne/access/DataRowUtilsIT.java  |   2 +-
 .../org/apache/cayenne/access/DbGeneratorIT.java   |   2 +-
 .../access/DefaultDataRowStoreFactoryIT.java       |   2 +-
 .../org/apache/cayenne/access/DeleteObjectIT.java  |   2 +-
 .../org/apache/cayenne/access/DeleteRulesIT.java   |   2 +-
 .../org/apache/cayenne/access/EmbeddingIT.java     |   2 +-
 .../cayenne/access/EmbeddingSerializeIT.java       |   2 +-
 .../apache/cayenne/access/EntityInheritanceIT.java |   2 +-
 .../java/org/apache/cayenne/access/EnumIT.java     |   2 +-
 .../apache/cayenne/access/FlattenedPrefetchIT.java |   2 +-
 .../access/FlattenedRelationshipInContextIT.java   |   2 +-
 .../apache/cayenne/access/IdentityColumnsIT.java   |   2 +-
 .../cayenne/access/IncrementalFaultListIT.java     |   2 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |   2 +-
 .../org/apache/cayenne/access/MiscTypesIT.java     |   2 +-
 .../access/NestedDataContextLocalCacheIT.java      |   2 +-
 .../access/NestedDataContextParentEventsIT.java    |   2 +-
 .../NestedDataContextParentPeerEventsIT.java       |   2 +-
 .../access/NestedDataContextPeerEventsIT.java      |   2 +-
 .../cayenne/access/NestedDataContextReadIT.java    |   2 +-
 .../access/NestedDataContextRollbackIT.java        |   2 +-
 .../access/NestedDataContextValidationIT.java      |   2 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |   2 +-
 .../access/NestedDataContext_DeadlockIT.java       |   2 +-
 .../org/apache/cayenne/access/NumericTypesIT.java  |   2 +-
 .../cayenne/access/ObjectStoreDiffRetainingIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreGCIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreIT.java   |   2 +-
 .../apache/cayenne/access/OptimisticLockingIT.java |   2 +-
 .../access/PrefetchProcessorTreeBuilderIT.java     |   2 +-
 .../cayenne/access/PrimitiveAttributesIT.java      |   2 +-
 .../apache/cayenne/access/QuotedIdentifiersIT.java |   2 +-
 .../cayenne/access/ReturnTypesMappingIT.java       |   2 +-
 .../SimpleIdIncrementalFaultListDataRowsIT.java    |   2 +-
 .../access/SimpleIdIncrementalFaultListIT.java     |   2 +-
 .../SimpleIdIncrementalFaultListPrefetchIT.java    |   2 +-
 .../cayenne/access/SingleTableInheritance1IT.java  |   2 +-
 .../org/apache/cayenne/access/ToManyListIT.java    |   2 +-
 .../java/org/apache/cayenne/access/UUIDIT.java     |   2 +-
 .../cayenne/access/VerticalInheritanceIT.java      |   2 +-
 .../VerticalInheritanceMultipleAttributesIT.java   |   2 +-
 .../access/dbsync/SchemaUpdateStrategyBase.java    |   2 +-
 .../access/jdbc/BatchActionGeneratedIT.java        |   2 +-
 .../apache/cayenne/access/jdbc/BatchActionIT.java  |   2 +-
 .../cayenne/access/jdbc/BatchActionLockingIT.java  |   2 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   |   2 +-
 .../apache/cayenne/access/jdbc/SelectActionIT.java |   2 +-
 ...SelectActionWithUnsupportedDistinctTypesIT.java |   2 +-
 .../translator/batch/DeleteBatchTranslatorIT.java  |   2 +-
 .../translator/batch/InsertBatchTranslatorIT.java  |   2 +-
 .../batch/SoftDeleteBatchTranslatorIT.java         |   2 +-
 .../translator/batch/UpdateBatchTranslatorIT.java  |   2 +-
 .../batch/legacy/DefaultBatchTranslatorIT.java     |   2 +-
 .../translator/ejbql/EJBQLSelectTranslatorIT.java  |   2 +-
 .../select/DefaultObjectSelectTranslatorIT.java    |   2 +-
 .../select/DefaultSelectTranslatorIT.java          |   2 +-
 .../select/DescriptorColumnExtractorIT.java        |   2 +-
 .../select/ExistsExpressionTranslatorIT.java       |   2 +-
 .../translator/select/ObjPathProcessorIT.java      |   2 +-
 .../QualifierTranslatorExistExpressionIT.java      |   2 +-
 .../translator/select/QualifierTranslatorIT.java   |   2 +-
 .../select/VerticalInheritanceJoinOrderIT.java     |   2 +-
 .../cayenne/access/types/DateTimeTypesIT.java      |   2 +-
 .../access/types/LegacyDateTimeTypesIT.java        |   2 +-
 .../access/util/DefaultOperationObserverIT.java    |   2 +-
 .../cayenne/ashwood/AshwoodEntitySorterIT.java     |   2 +-
 .../AshwoodEntitySorter_RelationshipsIT.java       |   2 +-
 .../ashwood/WeightedAshwoodEntitySorterIT.java     |   2 +-
 .../org/apache/cayenne/cache/QueryCacheIT.java     |   2 +-
 .../runtime/JNDIDataSourceFactoryIT.java           |   2 +-
 .../datasource/BasePoolingDataSourceIT.java        |   2 +-
 ...PoolingDataSource_FailingValidationQueryIT.java |   2 +-
 .../java/org/apache/cayenne/dba/AutoAdapterIT.java |   2 +-
 .../cayenne/dba/ConcurrentPkGeneratorIT.java       |   2 +-
 .../java/org/apache/cayenne/dba/JdbcAdapterIT.java |   2 +-
 .../org/apache/cayenne/dba/JdbcPkGeneratorIT.java  |   2 +-
 .../java/org/apache/cayenne/dba/PkGeneratorIT.java |   2 +-
 .../org/apache/cayenne/dba/TypesMappingIT.java     |   2 +-
 .../apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java |   2 +-
 .../apache/cayenne/dba/mysql/MySQLAdapterIT.java   |   2 +-
 .../cayenne/dba/oracle/Oracle8AdapterIT.java       |   2 +-
 .../apache/cayenne/dba/oracle/OracleAdapterIT.java |   2 +-
 .../cayenne/dba/oracle/OraclePkGeneratorIT.java    |   2 +-
 .../cayenne/dba/postgres/PostgresAdapterIT.java    |   2 +-
 .../cayenne/dba/sqlserver/SQLServerAdapterIT.java  |   2 +-
 .../cayenne/dba/sqlserver/SQLServerSnifferIT.java  |   2 +-
 .../cayenne/ejbql/EJBQLParser_CompileIT.java       |   2 +-
 .../exp/AggregateExpInMemoryEvaluationIT.java      |   2 +-
 .../java/org/apache/cayenne/exp/CaseWhenIT.java    |   2 +-
 .../apache/cayenne/exp/ExpressionFactoryIT.java    |   2 +-
 .../java/org/apache/cayenne/exp/ExpressionIT.java  |   2 +-
 .../cayenne/exp/ParsedExpQualifierCompatIT.java    |   2 +-
 .../apache/cayenne/exp/TranslateExpressionIT.java  |   2 +-
 .../org/apache/cayenne/exp/parser/ASTDbPathIT.java |   2 +-
 .../org/apache/cayenne/exp/parser/ASTEqualIT.java  |   2 +-
 .../org/apache/cayenne/exp/parser/ASTExistsIT.java |   2 +-
 .../apache/cayenne/exp/parser/ASTExtractIT.java    |   2 +-
 .../cayenne/exp/parser/ASTFunctionCallDateIT.java  |   2 +-
 .../cayenne/exp/parser/ASTFunctionCallMathIT.java  |   2 +-
 .../exp/parser/ASTFunctionCallStringIT.java        |   2 +-
 .../apache/cayenne/exp/parser/ASTNotExistsIT.java  |   2 +-
 .../cayenne/exp/parser/ASTObjPathEnumIT.java       |   2 +-
 .../apache/cayenne/exp/parser/ASTObjPathIT.java    |   2 +-
 .../parser/ExpressionCollectionEvaluationIT.java   |   2 +-
 .../cayenne/exp/parser/ExpressionEvaluationIT.java |   2 +-
 .../apache/cayenne/exp/property/IdPropertyIT.java  |   2 +-
 .../apache/cayenne/exp/property/PathAliasesIT.java |   2 +-
 .../java/org/apache/cayenne/map/AnnotationIT.java  |   2 +-
 .../java/org/apache/cayenne/map/DbEntityIT.java    |   2 +-
 .../org/apache/cayenne/map/DbRelationshipIT.java   |   2 +-
 .../test/java/org/apache/cayenne/map/EntityIT.java |   2 +-
 .../map/EntityResolverClassDescriptorIT.java       |   2 +-
 .../cayenne/map/EntityResolverGenericStackIT.java  |   2 +-
 .../org/apache/cayenne/map/EntityResolverIT.java   |   2 +-
 .../java/org/apache/cayenne/map/ObjEntityIT.java   |   2 +-
 .../org/apache/cayenne/map/ObjRelationshipIT.java  |   2 +-
 .../java/org/apache/cayenne/query/CAY2541IT.java   |   2 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |   2 +-
 .../apache/cayenne/query/EJBQLQueryCountIT.java    |   2 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |   2 +-
 .../apache/cayenne/query/EJBQLQueryNumericIT.java  |   2 +-
 .../query/FluentSelectPrefetchRouterActionIT.java  |   2 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |   2 +-
 .../cayenne/query/ObjectSelectIteratedQueryIT.java |   2 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |   2 +-
 .../cayenne/query/ObjectSelect_CacheKeyIT.java     |   2 +-
 .../query/ObjectSelect_FetchLimitOrderingIT.java   |   2 +-
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |   2 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |   2 +-
 .../cayenne/query/ObjectSelect_SubqueryIT.java     |   2 +-
 .../org/apache/cayenne/query/ProcedureCallIT.java  |   2 +-
 .../cayenne/query/ProcedureQueryCacheKeyIT.java    |   2 +-
 .../org/apache/cayenne/query/QueryChainIT.java     |   2 +-
 .../org/apache/cayenne/query/QueryTimeoutIT.java   |   2 +-
 .../cayenne/query/QueryWithCompoundJoinIT.java     |   2 +-
 .../query/QueryWithInheritancePrefetchIT.java      |   2 +-
 .../java/org/apache/cayenne/query/SQLExecIT.java   |   2 +-
 .../java/org/apache/cayenne/query/SQLSelectIT.java |   2 +-
 .../cayenne/query/SQLSelectIteratedQueryIT.java    |   2 +-
 .../cayenne/query/SQLTemplateCacheKeyIT.java       |   2 +-
 .../org/apache/cayenne/query/SQLTemplateIT.java    |   2 +-
 .../cayenne/query/SelectByIdIteratedQueryIT.java   |   2 +-
 .../org/apache/cayenne/query/SelectById_RunIT.java |   2 +-
 .../apache/cayenne/query/SelectQueryClobIT.java    |   2 +-
 .../cayenne/query/SelectQueryReturnTypesIT.java    |   2 +-
 .../apache/cayenne/query/StatementFetchSizeIT.java |   2 +-
 .../cayenne/reflect/LifecycleCallbackOrderIT.java  |   2 +-
 .../reflect/LifecycleCallbackRegistryIT.java       |   2 +-
 .../LifecycleCallbackRegistry_InheritanceIT.java   |   2 +-
 .../reflect/MixedPersistenceStrategyIT.java        |   2 +-
 .../PersistentObjectDescriptorFactoryIT.java       |   2 +-
 ...tObjectDescriptorFactory_InheritanceMapsIT.java |   2 +-
 ...ectDescriptorFactory_VerticalInheritanceIT.java |   2 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |   2 +-
 .../apache/cayenne/runtime/CayenneRuntimeIT.java   |   2 +-
 .../template/directive/BindDirectiveIT.java        |   2 +-
 .../template/directive/ResultDirectiveIT.java      |   2 +-
 .../cayenne/tx/TransactionCustomConnectionIT.java  |   2 +-
 .../apache/cayenne/tx/TransactionIsolationIT.java  |   2 +-
 .../tx/TransactionPropagationRollbackIT.java       |   2 +-
 .../org/apache/cayenne/tx/TransactionThreadIT.java |   2 +-
 .../org/apache/cayenne/tx/UserTransactionIT.java   |   2 +-
 .../unit/{runtime => }/CayenneProjects.java        |   2 +-
 .../org/apache/cayenne/unit/CayenneTestEnvIT.java  |   1 -
 .../org/apache/cayenne/unit/CayenneTestsEnv.java   |   4 +-
 .../apache/cayenne/unit/ConnectionProperties.java  | 128 -----------
 .../unit/{runtime => }/FlavoredDbHelper.java       |   2 +-
 .../org/apache/cayenne/unit/PeopleProjectCase.java |   1 -
 .../unit/TestDataSourceDescriptorFactory.java      | 240 ---------------------
 .../cayenne/unit/UnitDataSourceDescriptor.java     |  50 -----
 .../unit/datasource/DataSourceConfigFile.java      | 106 +++++++++
 .../unit/datasource/DataSourceConfigLoader.java    | 196 +++++++++++++++++
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_191IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_194IT.java    |   2 +-
 ...untimeCaseBatchQueryBuilderFactoryProvider.java |  32 ---
 .../cayenne/unit/runtime/RuntimeCaseModule.java    | 169 ---------------
 ...ainerProvider.java => Db2ContainerStarter.java} |  20 +-
 ...tainerProvider.java => DbContainerStarter.java} |  21 +-
 ...rProvider.java => MariaDbContainerStarter.java} |  12 +-
 ...nerProvider.java => MysqlContainerStarter.java} |  13 +-
 ...erProvider.java => OracleContainerStarter.java} |  20 +-
 ...Provider.java => PostgresContainerStarter.java} |  13 +-
 ...rovider.java => SqlServerContainerStarter.java} |  13 +-
 .../apache/cayenne/util/DeepMergeOperationIT.java  |   2 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |   2 +-
 .../org/apache/cayenne/value/json/JsonTypeIT.java  |   2 +-
 315 files changed, 634 insertions(+), 1001 deletions(-)

diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
index ec5c485ca..4f896433d 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
@@ -44,7 +44,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
index 407702fa5..3e991df57 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
index c64bc3108..9e9cbe350 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
index e06e00960..7043324ee 100644
--- a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
+++ b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
index 02201665c..0e5a5967f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
index 679ea7b7e..0b07ff86c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.ROPainting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
index e367c873f..c486667e8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
index e93d32dcc..9668f1653 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
 import org.apache.cayenne.testdo.map_to_many.MapToManyTarget;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
index 5afc39c4a..7708d0194 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
index b452436c7..30e0c841f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkDep;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyFkRoot;
 import org.apache.cayenne.testdo.relationships_to_many_fk.ToManyRoot2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
index d83ba9962..53f3fdba0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK1;
 import org.apache.cayenne.testdo.relationships_to_one_fk.ToOneFK2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
index 2cb3946b2..150189c84 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.testdo.qualified.Qualified2;
 import org.apache.cayenne.testdo.qualified.Qualified3;
 import org.apache.cayenne.testdo.qualified.Qualified4;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelDeleteIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelDeleteIT.java
index 67d1c5c3b..43bafc6b4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelDeleteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelDeleteIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.testmap.ArtGroup;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelICustomSorterIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelICustomSorterIT.java
index 1607e67e3..d6a66c745 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelICustomSorterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelICustomSorterIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.CompoundPaintingLongNames;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelIT.java
index fb17ad095..8f239d44d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOReflexiveRelIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.testmap.ArtGroup;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
index 07066ec77..27193339b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToManyTarget;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
index a82bd6a84..9ddd40414 100644
--- a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
index 3bd317104..bc49819a3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CharPkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayenneDOTestBase.java b/cayenne/src/test/java/org/apache/cayenne/CayenneDOTestBase.java
index 6bc2d7255..a638a8b46 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayenneDOTestBase.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayenneDOTestBase.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java b/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
index 2c05ceb59..ba65c0778 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
index 7b0d15b9f..5b649aa38 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectIT.java
index 4a1617b20..e4eccd0ed 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.util.TstBean;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
index 399e649f7..1344e60d3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectReflexiveIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectReflexiveIT.java
index d5e29f35c..95186edfe 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectReflexiveIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectReflexiveIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.reflexive.Other;
 import org.apache.cayenne.testdo.reflexive.Reflexive;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
index 6152358d8..de9b88232 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
index 2bd5eb927..5c83f6ad1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
index cda61d8b8..2dd705b43 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.ROPainting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
index 78bf47a35..da010f80e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
index 9acf20f45..d739d9db7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectValidationIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectValidationIT.java
index ddc587414..a2717b407 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectValidationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectValidationIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.validation.BeanValidationFailure;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
index 7cb53d453..ca5571fb1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.testdo.relationships.E1;
 import org.apache.cayenne.testdo.relationships.E2;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
 import org.apache.cayenne.unit.dba.OracleTestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.AfterEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java b/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
index dfbd29cc9..aa5e5dc7b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/DataContextConcurrencyIT.java b/cayenne/src/test/java/org/apache/cayenne/DataContextConcurrencyIT.java
index 13711e9da..8c975c3d3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/DataContextConcurrencyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/DataContextConcurrencyIT.java
@@ -26,7 +26,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.util.Util;
diff --git a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
index 3d770c5f2..b80eb668f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
index 10e716b6f..c8404c569 100644
--- a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest2;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest4;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest5;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.validation.ValidationResult;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
index 7bf8aceaa..66f72e1b6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
index fbcbc621e..82aa28b05 100644
--- a/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.hybrid.HybridEntity1;
 import org.apache.cayenne.testdo.hybrid.HybridEntity2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
index 54742756f..4b6d15b7a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
@@ -24,7 +24,7 @@ import java.sql.Types;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.lazy.Lazyblob;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ManyToManyJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/ManyToManyJoinIT.java
index fe41abfee..e4256b905 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ManyToManyJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ManyToManyJoinIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.testdo.relationships_many_to_many_join.Author;
 import org.apache.cayenne.testdo.relationships_many_to_many_join.SelfRelationship;
 import org.apache.cayenne.testdo.relationships_many_to_many_join.SelfRelationshipSub;
 import org.apache.cayenne.testdo.relationships_many_to_many_join.Song;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ManyToManyNoJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/ManyToManyNoJoinIT.java
index da9d444fc..274ff6818 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ManyToManyNoJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ManyToManyNoJoinIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.relationships_activity.Activity;
 import org.apache.cayenne.testdo.relationships_activity.ActivityResult;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/MeaningfulFKIT.java b/cayenne/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
index 4c81ca0c3..520bac43c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne;
 import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.testdo.relationships.MeaningfulFK;
 import org.apache.cayenne.testdo.relationships.RelationshipHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.validation.ValidationResult;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
index 02676cd70..60f65d3c0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.testdo.oneway.OnewayTable1;
 import org.apache.cayenne.testdo.oneway.OnewayTable2;
 import org.apache.cayenne.testdo.oneway.OnewayTable3;
 import org.apache.cayenne.testdo.oneway.OnewayTable4;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java b/cayenne/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
index b8b595e7c..cda608484 100644
--- a/cayenne/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/PersistenceByReachabilityIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/PersistentObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/PersistentObjectIT.java
index 0585b413f..70f92e94f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/PersistentObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/PersistentObjectIT.java
@@ -19,7 +19,7 @@
 
 package org.apache.cayenne;
 
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/PersistentObjectSerializationIT.java b/cayenne/src/test/java/org/apache/cayenne/PersistentObjectSerializationIT.java
index a88c4c55d..8f496b4c4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/PersistentObjectSerializationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/PersistentObjectSerializationIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.access.ToManyList;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java b/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
index 7b1d95569..dc910bc07 100644
--- a/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java b/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
index 5f277c5fd..4459631ce 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
index 6d818d4c0..58fc6eea7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.dba.JdbcPkGenerator;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
index 1d70dfb2a..414b2cb5e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
@@ -24,7 +24,7 @@ import java.util.List;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.cay_2032.Team;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
index 753e7e94c..9b5ed129e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.cay_2641.ArtistLazy;
 import org.apache.cayenne.testdo.cay_2641.DatamapLazy;
 import org.apache.cayenne.testdo.cay_2641.PaintingLazy;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
index 365aa0518..082e1dafe 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.exp.parser.ASTObjPath;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.cay_2666.CAY2666;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
index 3b4882707..e11516b12 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.array_type.ArrayTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
index 2bdbab7e6..45f349329 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.binary_pk.BinaryPKTest1;
 import org.apache.cayenne.testdo.binary_pk.BinaryPKTest2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
index 2a56ba19e..baa11815c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
@@ -24,7 +24,7 @@ import java.util.List;
 import org.apache.cayenne.access.types.ByteArrayTypeTest;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.lob.BlobTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
index 88c64a069..d8694b1ef 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.map.LifecycleEvent;
 import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
index 25da9cf1d..eb030da34 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.compound.CharPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
index 946351539..5d32e4d0f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
index 938e37595..8df9939b0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.lob.ClobTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
index bc64b3fb9..9db825486 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.graph.GraphDiff;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.NullTestEntity;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
index 7cb1e7256..8df15d662 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.testdo.compound.CompoundOrder;
 import org.apache.cayenne.testdo.compound.CompoundOrderLine;
 import org.apache.cayenne.testdo.compound.CompoundOrderLineInfo;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
index ba5bfea49..b3a43274e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.testdo.db1.CrossdbM1E1;
 import org.apache.cayenne.testdo.db2.CrossdbM2E1;
 import org.apache.cayenne.testdo.db2.CrossdbM2E2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
index b811560ec..5e99411f0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.graph.GraphEvent;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.EventUtil;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDecoratedStackIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDecoratedStackIT.java
index b19f29605..bf4d33543 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDecoratedStackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDecoratedStackIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
index 14cef0106..3b765d483 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
index 73dfe1f06..9bcd6c303 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
index 51828981a..8e7051bf4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
@@ -37,7 +37,7 @@ import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index 0c9a296ef..8d53e5433 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
index 90c5240ba..94e35d180 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.testdo.things.Bag;
 import org.apache.cayenne.testdo.things.Ball;
 import org.apache.cayenne.testdo.things.Box;
 import org.apache.cayenne.testdo.things.Thing;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
index 0e8df54f5..f97ad5c7c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
index 38b28c336..8c7ff7502 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
index 7115f9433..d643eaa10 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
index cd400e6ee..299a927c4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
index de6ad756f..601802ee3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
index 4d5af91d6..36e68f9c5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
index 3e15bc8bd..60a5e42ad 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
index cd0525c32..6a90f6414 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.QueryChain;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
index 4a031e193..8f00d301a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
@@ -21,7 +21,7 @@ import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
index 3eb0d1541..e696c99a7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
index 2636ec4e4..4ff0f3487 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
index cdcce3187..b375a86b9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.numeric_types.BigDecimalEntity;
 import org.apache.cayenne.testdo.numeric_types.BigIntegerEntity;
 import org.apache.cayenne.testdo.numeric_types.BooleanTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
index afb52c237..e5f891ca8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
index 4651ad8ee..197751b76 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
index 683b238ac..ab08a6e0f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
index 8d60e0fa4..22c37ee63 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
index 6fc56eb70..75bf99ea5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
index cf2cc3eea..b8ec71639 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
index 3a640db38..32f5213e3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.access.flush.operation.GraphBasedDbRowOpSorter;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPKDep;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPKTest1;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPk;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
index 83686d27f..e03514ed9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPkBigint;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPkBigintGenerated;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPkDep2;
 import org.apache.cayenne.testdo.meaningful_pk.MeaningfulPkTest2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
index f89ba571d..b87b579ce 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.testdo.extended_type.ExtendedTypeEntity;
 import org.apache.cayenne.testdo.extended_type.StringET1;
 import org.apache.cayenne.testdo.extended_type.StringET1ExtendedType;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
index 503fd3fee..1e4ed51b0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
index 96e573903..f931e7c6a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
@@ -36,7 +36,7 @@ import org.apache.cayenne.testdo.testmap.CompoundPainting;
 import org.apache.cayenne.testdo.testmap.CompoundPaintingLongNames;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
index 42e0f2e10..28eaccd7e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
@@ -42,7 +42,7 @@ import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.ROArtist;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
index 9c03b60fe..06b3d6ae7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.tx.BaseTransaction;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
index d954bf60c..c659b620c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
index 90a81f3e4..a2cd53f40 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
index db68743af..e7b61507a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.no_pk.NoPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
index c687355bb..1282655cd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
index dd411466f..cf7cdebdf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
index 52e828b8e..42982124a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
index cd64d9f07..034f54190 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
index 251766c8f..2f4597789 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
index 0f7035ab2..4260e756c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.tx.ExternalTransaction;
 import org.apache.cayenne.tx.Transaction;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
index 3eba71928..65edb6b7b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
index d1f69ce6a..0dc0d004d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.compound.CharFkTestEntity;
 import org.apache.cayenne.testdo.compound.CharPkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
index da6e69c99..03385a5ad 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -38,7 +38,7 @@ import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
index 045953a8e..b5ea0909e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.testdo.testmap.ArtistExhibit;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
index 4e41981c8..49e5c7f9e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
index 5da45eec8..3a7d9fd28 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.tx.ExternalTransaction;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
index ce644e672..df3e9bdb2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
index f0da869e9..f54674a2d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryChain;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
index 28316ed79..d26f25625 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
index d1d507713..4051c102e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
index f01f92218..7ac8f09ad 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.RelationshipQuery;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
index 1dac94026..f712f3bab 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
index 4f07ec62f..42f7022a2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
index 91454eedb..903b4eb07 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
index 8135b4b65..3fccb34f3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.junit.jupiter.api.AfterEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
index 715a621e8..d736a0d71 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.AfterEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
index 183c3ce76..1bc1b5616 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
index 6c52ca69f..18396dc82 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.unit.util.ValidationDelegate;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
index eb21b4bb0..a0cbbceba 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainFiltersIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainFiltersIT.java
index 3978d5fe7..aa1bcb244 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainFiltersIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainFiltersIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.graph.GraphDiff;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.util.ListResponse;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
index 469358151..ea7842963 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.annotations.Tag1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
index ab04322f2..c46582a70 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.AfterEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
index dd560dada..d6c6464c2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne.access;
 
 import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
index 5f5b17dfe..516e20f43 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
index b30565146..91ec693dd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.datasource.UnmanagedPoolingDataSource;
 import org.apache.cayenne.query.SQLAction;
 import org.apache.cayenne.query.SQLActionVisitor;
 import org.apache.cayenne.query.SQLSelect;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
index fae2804f6..fd42b57f4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
index e41d20b71..7cfb8836e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
index 8e3137299..8be70ceb1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.runtime.CayenneRuntime;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
index c6aa7aa8e..ad3cb0285 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
@@ -48,7 +48,7 @@ import org.apache.cayenne.tx.DefaultTransactionFactory;
 import org.apache.cayenne.tx.DefaultTransactionManager;
 import org.apache.cayenne.tx.TransactionFactory;
 import org.apache.cayenne.tx.TransactionManager;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
index d5b9e7266..6961e82d9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
index 5923dbcde..c13fc3a10 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleFlatB;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest1;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest2;
 import org.apache.cayenne.testdo.relationships_delete_rules.DeleteRuleTest3;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
index d95b1ca42..cb3528726 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
 import org.apache.cayenne.testdo.embeddable.EmbedEntity2;
 import org.apache.cayenne.testdo.embeddable.EmbedRoot;
 import org.apache.cayenne.testdo.embeddable.Embeddable1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
index b8cc664ef..9babc15fa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
 import org.apache.cayenne.testdo.embeddable.Embeddable1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.util.Util;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
index 66d3e1bd9..58a9486f5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.testdo.inheritance.BaseEntity;
 import org.apache.cayenne.testdo.inheritance.DirectToSubEntity;
 import org.apache.cayenne.testdo.inheritance.RelatedEntity;
 import org.apache.cayenne.testdo.inheritance.SubEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
index de46cfa04..0b781a40c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.testdo.enum_test.Enum1;
 import org.apache.cayenne.testdo.enum_test.EnumEntity;
 import org.apache.cayenne.testdo.enum_test.EnumEntity2;
 import org.apache.cayenne.testdo.enum_test.EnumEntity3;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
index a48f24371..b8b2a9a81 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
index 4d760ee76..7d33556c7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
index f8246a46c..844005e79 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.testdo.generated.GeneratedColumnTestEntity;
 import org.apache.cayenne.testdo.generated.GeneratedF1;
 import org.apache.cayenne.testdo.generated.GeneratedF2;
 import org.apache.cayenne.testdo.generated.GeneratedReflexive;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
index 4a82e99e1..30a41dba3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.util.Util;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index 85ab07c60..1b0fdecc0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
index 738f0e9d9..dabbb9950 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.misc_types.ArraysEntity;
 import org.apache.cayenne.testdo.misc_types.CharacterEntity;
 import org.apache.cayenne.testdo.misc_types.SerializableEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
index 26d28750c..2b1fc6ec8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
index 8a000d9b7..3b0a0d5e7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
index bb4d831a4..d8097b228 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.relationships_child_master.Child;
 import org.apache.cayenne.testdo.relationships_child_master.Master;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
index 8bf693a80..e3c4ab6a7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
index 394e1d001..a39de2406 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
index 7f62531b5..d2ca8ddcb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
index 7fea5526d..2bbf53e89 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.validation.ValidationException;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index 12290eb1b..fe275d23d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
index a8a401388..68575afd9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
index 9957b35a9..d78da7b35 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
@@ -40,7 +40,7 @@ import org.apache.cayenne.testdo.numeric_types.DecimalPKTestEntity;
 import org.apache.cayenne.testdo.numeric_types.LongEntity;
 import org.apache.cayenne.testdo.numeric_types.SmallintTestEntity;
 import org.apache.cayenne.testdo.numeric_types.TinyintTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
index c42912b69..bb24aa254 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
index cc1a818a5..0ebc133a7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
index a44e4e2b0..90a7c4473 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
index 6f9dc8591..563f2d929 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.locking.RelLockingTestEntity;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
index bfbf40810..2823db360 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.reflect.ClassDescriptor;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
index 4cb48822a..695d5871c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
@@ -23,7 +23,7 @@ import java.util.List;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.primitive.PrimitivesTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java b/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
index 454633547..be79d238b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.query.RelationshipQuery;
 import org.apache.cayenne.query.UpdateBatchQuery;
 import org.apache.cayenne.testdo.quotemap.QuoteAdress;
 import org.apache.cayenne.testdo.quotemap.Quote_Person;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
index be4b3bfdf..f12fa0b2c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMap2;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMapLobs1;
 import org.apache.cayenne.unit.dba.PostgresTestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
index 8e44c1853..178e66381 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
index c71957a11..5964fcd6b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
index c83313079..dff95fc2b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
index 2360e96ed..712a611ca 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritance1IT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.inheritance_flat.Group;
 import org.apache.cayenne.testdo.inheritance_flat.Role;
 import org.apache.cayenne.testdo.inheritance_flat.User;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
index 93d6730e2..7b01b8c2a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.util.PersistentObjectList;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java b/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
index 34cb45648..60f35f2e0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.uuid.UuidPkEntity;
 import org.apache.cayenne.testdo.uuid.UuidTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
index 94e628c07..c51e8d7a3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.inheritance_vertical.*;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.AfterEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
index 993bff507..c0a2ef678 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.inheritance_vertical.IvImpl;
 import org.apache.cayenne.testdo.inheritance_vertical.IvOther;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java b/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
index 27935830c..8c12d30ee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
index fbe494453..0f7eeaa78 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.dba.JdbcAdapter;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.InsertBatchQuery;
 import org.apache.cayenne.testdo.generated.GeneratedColumnTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
index e34cf5d43..93fd7730d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.dba.JdbcAdapter;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.InsertBatchQuery;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
index f1873e46b..87fb2996d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.DeleteBatchQuery;
 import org.apache.cayenne.unit.jdbc.TestConnection;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
index 3c862a91f..3f502cc19 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
index f35edbe8f..7726abd89 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
@@ -23,7 +23,7 @@ import java.util.List;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.lob.ClobTestEntity;
 import org.apache.cayenne.testdo.lob.ClobTestRelation;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
index 423969b16..8306d1261 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.unsupported_distinct_types.Customer;
 import org.apache.cayenne.testdo.unsupported_distinct_types.Product;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
index 51fd1aaff..6814d1f8d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.query.DeleteBatchQuery;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
index e755de496..4efb2566f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.query.InsertBatchQuery;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
index e66ff797a..c5cd3a691 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.soft_delete.SoftDelete;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
index 968c6f11d..13150be93 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.query.UpdateBatchQuery;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
index 27baa9e89..1e56b5ff9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.BatchQuery;
 import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
index f6e41e6f8..fa3a7237e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.ejbql.EJBQLParser;
 import org.apache.cayenne.ejbql.EJBQLParserFactory;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
index 7e360f9ae..004977350 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.access.translator.select;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
index cd3134e54..a0c4caf1d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.testdo.testmap.CompoundPainting;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorIT.java
index 373f7d205..3064f3e0f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.reflect.ClassDescriptor;
 import org.apache.cayenne.testdo.testmap.CompoundPaintingLongNames;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslatorIT.java
index 4db1805d8..8bf157911 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslatorIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.MockQueryMetadata;
 import org.apache.cayenne.query.QueryMetadata;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ObjPathProcessorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ObjPathProcessorIT.java
index 122ba062b..00384a969 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ObjPathProcessorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ObjPathProcessorIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.exp.path.CayennePath;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.ObjectSelect;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorExistExpressionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorExistExpressionIT.java
index 2bbc23f82..01e1bb9a3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorExistExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorExistExpressionIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
index 8a97dcf7a..7c4bb29ff 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
index 21de8aee8..a56a99722 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.inheritance_vertical.IvBase;
 import org.apache.cayenne.testdo.inheritance_vertical.IvOther;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
index 9922d87ac..7f403cd10 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.datetime.LocalTimeTestEntity;
 import org.apache.cayenne.testdo.datetime.PeriodTestEntity;
 import org.apache.cayenne.unit.dba.MySQLTestDbAdapter;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
index 30a17e29a..5333caad9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.MappedSelect;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.legacy_datetime.CalendarEntity;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/util/DefaultOperationObserverIT.java b/cayenne/src/test/java/org/apache/cayenne/access/util/DefaultOperationObserverIT.java
index 697f86552..4857ff7da 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/util/DefaultOperationObserverIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/util/DefaultOperationObserverIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.access.util;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorterIT.java b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorterIT.java
index 0fa8b39f9..5662ca992 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorterIT.java
@@ -25,7 +25,7 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
index e4949b0bc..489186881 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ashwood/WeightedAshwoodEntitySorterIT.java b/cayenne/src/test/java/org/apache/cayenne/ashwood/WeightedAshwoodEntitySorterIT.java
index 23e40138b..b8c704edf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ashwood/WeightedAshwoodEntitySorterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ashwood/WeightedAshwoodEntitySorterIT.java
@@ -22,7 +22,7 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/cache/QueryCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/cache/QueryCacheIT.java
index 83912578c..52c61dc37 100644
--- a/cayenne/src/test/java/org/apache/cayenne/cache/QueryCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/cache/QueryCacheIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
index d09e8598c..eccabf7ab 100644
--- a/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.configuration.runtime;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.unit.jdbc.TestDataSource;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
index aac158659..b55a95508 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.datasource;
 
 import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
index 2e3023636..6039a5a33 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.datasource;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
index 5d0c012d8..aa0d588f8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
index 354ddb261..bd48c9227 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.qualified.Qualified1;
 import org.apache.cayenne.unit.dba.DerbyTestDbAdapter;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
index ec1b59a36..6395afb6e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbKeyGenerator;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
index 83d0e4e15..4f0286d8c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.dba.derby.DerbyPkGenerator;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
index 7c2fb9fe1..d82c28af4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.dba;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
index b73c44c79..b40a95f3d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba;
 
 import org.apache.cayenne.MockSerializable;
 import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
index ec7466673..8b80f6d58 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.hsqldb;
 
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
index ae3ae7884..7613d54bf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
@@ -23,7 +23,7 @@ import java.sql.Types;
 
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
index 6189d5e76..bbb0957ea 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
@@ -19,7 +19,7 @@
 
 package org.apache.cayenne.dba.oracle;
 
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
index 706a55739..845695c79 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.oracle;
 
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.query.InsertBatchQuery;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
index 932ad0112..a5a07d090 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.dba.oracle;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbKeyGenerator;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
index 96355ac09..c2becc627 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.dba.postgres;
 
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
index e53a16538..6843d9582 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.dba.sqlserver;
 
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
index 53245ced1..22572f243 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dba.sqlserver;
 
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.unit.dba.SQLServerTestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java b/cayenne/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
index 081ae067c..b9b7a7cb7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
@@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
 
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.runtime.CayenneRuntime;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
index 817923a9c..34775851d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
index 784f6f533..3b341b8a3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.exp.property.StringProperty;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
index 4ec76095c..3c5ca544c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Award;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
index 06664ab0a..4475619d1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.exp.parser.SimpleNode;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
index ede4e9b28..f41a299b1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
index 836e760c3..2e53287f9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTDbPathIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTDbPathIT.java
index 49a16e4a6..d5d38b24d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTDbPathIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTDbPathIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTEqualIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTEqualIT.java
index 7e6d70d74..1fefb883b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTEqualIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTEqualIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
index 456170851..3dea68370 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
index 40b9d3845..60d16f2bb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
index c95276ba9..2718a0352 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallMathIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallMathIT.java
index eb7ca8855..650eb5d7a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallMathIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallMathIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.table_primitives.TablePrimitives;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
index 7cb9fd592..8e4fad654 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.dba.OracleTestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
index 224017e48..842349119 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathEnumIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathEnumIT.java
index 090d3a85f..00f2f17f3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathEnumIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathEnumIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.exp.parser;
 
 import org.apache.cayenne.testdo.enum_test.Enum1;
 import org.apache.cayenne.testdo.enum_test.EnumEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathIT.java
index abdaa3a2c..f86ed669c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTObjPathIT.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
index e30387cab..e6686d0ab 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
index 58b3355f0..eb563a29f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.query.Ordering;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
index d3a4f2d30..9056d33cf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
index 68aa63073..b13fc876b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/AnnotationIT.java b/cayenne/src/test/java/org/apache/cayenne/map/AnnotationIT.java
index 60e0e45d7..a330312df 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/AnnotationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/AnnotationIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.map;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
 import org.apache.cayenne.testdo.annotation.ArtistAnnotation;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/DbEntityIT.java b/cayenne/src/test/java/org/apache/cayenne/map/DbEntityIT.java
index 51d415eee..922e02e51 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/DbEntityIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/DbEntityIT.java
@@ -23,7 +23,7 @@ import java.util.Collection;
 
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/DbRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/map/DbRelationshipIT.java
index e7eb79b4f..abb3c0ba1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/DbRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/DbRelationshipIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne.map;
 
 import org.apache.cayenne.runtime.CayenneRuntime;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityIT.java
index c99d27e83..1fe75ab8c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.map;
 
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.CayenneMapEntry;
 import org.apache.cayenne.util.Util;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
index c2ef5dd4a..d02879d8c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverClassDescriptorIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.reflect.LazyClassDescriptorDecorator;
 import org.apache.cayenne.reflect.PropertyDescriptor;
 import org.apache.cayenne.testdo.mt.MtTable1;
 import org.apache.cayenne.testdo.mt.MtTable2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
index 3e7a25a3c..6ff8578ad 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.map;
 
 import org.apache.cayenne.GenericPersistentObject;
 import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
index 978d8a340..35d87d0a2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.map;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/ObjEntityIT.java b/cayenne/src/test/java/org/apache/cayenne/map/ObjEntityIT.java
index 267cc50d9..289004859 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/ObjEntityIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/ObjEntityIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.parser.ASTObjPath;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/ObjRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/map/ObjRelationshipIT.java
index 137542c36..0b32e3b7f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/ObjRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/ObjRelationshipIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.exp.path.CayennePath;
 import org.apache.cayenne.resource.URLResource;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.inheritance_vertical.Iv2Sub1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.util.XMLEncoder;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java b/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
index 65ca7b027..d63deb69a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.exp.parser.ASTEqual;
 import org.apache.cayenne.exp.parser.ASTScalar;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 1ca26e100..96f75cc6a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -47,7 +47,7 @@ import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
 import org.apache.cayenne.unit.dba.PostgresTestDbAdapter;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
index 144e548d3..a72b73cce 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.Collections;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
index 1d95f2942..9ff357c43 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.util.XMLEncoder;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
index 3604366ec..95d131572 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne.query;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.numeric_types.BigIntegerEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
index f549b9587..5bf36d5bc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
index 0c5399b91..641c311b4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.tx.ExternalTransaction;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
index 2a9171d98..a9377b124 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
index 6608501c6..27f3b0455 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
index a73fe60b8..64b57dd41 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.query;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
index 5e680671e..ff64dad0f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.query;
 import java.util.List;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
index c77404d69..c6ee735c4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.primitive.PrimitivesTestEntity;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
index b9e4061c0..6853fb0a5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.dba.OracleTestDbAdapter;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
index ef2004198..85d6f74f5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
index 1fd938032..d73a0c1ba 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.tx.BaseTransaction;
 import org.apache.cayenne.tx.ExternalTransaction;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyIT.java
index 4aaaf2665..6d4ce5915 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.query;
 
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryChainIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryChainIT.java
index d3d12cdd3..f52cedfd0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryChainIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryChainIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.query;
 
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryTimeoutIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryTimeoutIT.java
index 4bb7487e5..88fea0a51 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryTimeoutIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryTimeoutIT.java
@@ -20,7 +20,7 @@
 package org.apache.cayenne.query;
 
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
index 341ba1272..964d33b19 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
index d7bf60b37..e026e9acf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.testdo.inheritance_with_enum.Dependent;
 import org.apache.cayenne.testdo.inheritance_with_enum.Root;
 import org.apache.cayenne.testdo.inheritance_with_enum.Sub;
 import org.apache.cayenne.testdo.inheritance_with_enum.Type;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
index d6efd1f21..b46a19868 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
@@ -23,7 +23,7 @@ import java.util.Map;
 
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.QueryResult;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index 46eed83e5..590646bf4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -33,7 +33,7 @@ import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
index 28804dd7a..f7ad19c27 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
index 9d6c4ae26..4a13d5280 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
@@ -19,7 +19,7 @@
 package org.apache.cayenne.query;
 
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
index b991d2d59..40309b5a7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.dba.OracleTestDbAdapter;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
index 1a9860786..8f00eeccf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
index 8adbc375c..b63ff2694 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
index 5eb5b3828..eacbf4a71 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.query;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.lob.ClobTestEntity;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
index dfe104711..0c14c8c25 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.exp.parser.ASTObjPath;
 import org.apache.cayenne.exp.parser.ASTScalar;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java b/cayenne/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
index d58fe8656..803b299a0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/StatementFetchSizeIT.java
@@ -20,7 +20,7 @@ package org.apache.cayenne.query;
 
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
index 5db8b7710..944c20cc2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.annotation.PrePersist;
 import org.apache.cayenne.annotation.PreRemove;
 import org.apache.cayenne.annotation.PreUpdate;
 import org.apache.cayenne.testdo.lifecycle_callbacks_order.Lifecycle;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistryIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistryIT.java
index f7626889a..813befb3f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistryIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.annotations.Tag1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry_InheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry_InheritanceIT.java
index f5e5ab7ee..0e7799461 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry_InheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry_InheritanceIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.testdo.inheritance_flat.Role;
 import org.apache.cayenne.testdo.inheritance_flat.User;
 import org.apache.cayenne.testdo.inheritance_flat.UserProperties;
 import org.apache.cayenne.testdo.testmap.annotations.Tag2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
index dc2fa7325..703ade7c6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy;
 import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy2;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
index 38eff467c..9df629784 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.reflect.PropertyVisitor;
 import org.apache.cayenne.reflect.SingletonFaultFactory;
 import org.apache.cayenne.reflect.ToManyProperty;
 import org.apache.cayenne.reflect.ToOneProperty;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
index 87ba4e782..2818de869 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.reflect.PropertyVisitor;
 import org.apache.cayenne.reflect.SingletonFaultFactory;
 import org.apache.cayenne.reflect.ToManyProperty;
 import org.apache.cayenne.reflect.ToOneProperty;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
index 6867ca78e..72b13a7d1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.GenericPersistentObject;
 import org.apache.cayenne.access.types.ValueObjectTypeRegistry;
 import org.apache.cayenne.reflect.ClassDescriptor;
 import org.apache.cayenne.reflect.SingletonFaultFactory;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
index 6babb7960..3fe37e215 100644
--- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.query.SQLSelect;
 import org.apache.cayenne.unit.CayenneTestsEnv;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeIT.java b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeIT.java
index f7ba08f59..9c5eb4a49 100644
--- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.tx.Transaction;
 import org.apache.cayenne.tx.TransactionListener;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.validation.ValidationException;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java b/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
index 6bee210b3..e226c25b2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
@@ -39,7 +39,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java b/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
index b0fbbc9f9..34000b855 100644
--- a/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
index ebf0fb6d9..a066faadc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
index f7bad3ec0..5224facee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
index aacbebbf9..8584402e1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
index 248faf326..77b48d989 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.tx;
 import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
index 39ff9287d..4677e9a34 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.tx;
 
 import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneProjects.java
similarity index 99%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/CayenneProjects.java
index 968dfd3aa..1d6bc3c4e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/CayenneProjects.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneProjects.java
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 public class CayenneProjects {
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestEnvIT.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestEnvIT.java
index 72c177d18..18c72379f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestEnvIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestEnvIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.unit;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
index ab0588479..25baf4af7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -43,8 +43,8 @@ import org.apache.cayenne.map.Procedure;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.DbHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.unit.datasource.DataSourceConfigLoader;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.FlavoredDbHelper;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
@@ -67,7 +67,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     public static final DbSchemaManager COMMON_SCHEMA;
 
     static {
-        DataSourceDescriptor dsDescriptor = TestDataSourceDescriptorFactory.create();
+        DataSourceDescriptor dsDescriptor = DataSourceConfigLoader.load();
         DataSource ds = DataSourceBuilder
                 .url(dsDescriptor.getDataSourceUrl())
                 .driver(dsDescriptor.getJdbcDriver())
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java b/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java
deleted file mode 100644
index 60426e15a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.unit;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * ConnectionProperties handles a set of DataSourceInfo objects using
- * information stored in $HOME/.cayenne/connection.properties. As of now this is
- * purely a utility class. Its features are not used in deployment.
- */
-class ConnectionProperties {
-
-	static final int MIN_CONNECTIONS = 1;
-	static final int MAX_CONNECTIONS = 3;
-
-	private static final String ADAPTER_KEY = "adapter";
-	private static final String ADAPTER20_KEY = "cayenne.adapter";
-	private static final String USER_NAME_KEY = "jdbc.username";
-	private static final String PASSWORD_KEY = "jdbc.password";
-	private static final String URL_KEY = "jdbc.url";
-	private static final String DRIVER_KEY = "jdbc.driver";
-
-	private final Map<String, UnitDataSourceDescriptor> connectionDescriptors;
-
-	/**
-	 * Constructor for ConnectionProperties.
-	 */
-	ConnectionProperties(Map<String, String> props) {
-		connectionDescriptors = new HashMap<>();
-		for (String name : extractNames(props)) {
-			UnitDataSourceDescriptor dsi = buildDataSourceDescriptor(
-					props.entrySet().stream()
-							.filter(e -> e.getKey().startsWith(name + '.'))
-							.collect(Collectors.toMap(
-									e -> {
-										String key = e.getKey();
-										return key.substring(key.indexOf('.') + 1);
-									},
-									Map.Entry::getValue
-							))
-			);
-			connectionDescriptors.put(name, dsi);
-		}
-	}
-
-	int size() {
-		return connectionDescriptors.size();
-	}
-
-	/**
-	 * Returns DataSourceInfo object for a symbolic name. If name does not match
-	 * an existing object, returns null.
-	 */
-	UnitDataSourceDescriptor getConnection(String name) {
-		return connectionDescriptors.get(name);
-	}
-
-	/**
-	 * Creates a DataSourceInfo object from a set of properties.
-	 */
-	private UnitDataSourceDescriptor buildDataSourceDescriptor(Map<String, String> props) {
-		UnitDataSourceDescriptor dsi = new UnitDataSourceDescriptor();
-
-		String adapter = props.get(ADAPTER_KEY);
-
-		// try legacy adapter key
-		if (adapter == null) {
-			adapter = props.get(ADAPTER20_KEY);
-		}
-
-		dsi.setAdapterClassName(adapter);
-		dsi.setUserName(props.get(USER_NAME_KEY));
-		dsi.setPassword(props.get(PASSWORD_KEY));
-		dsi.setDataSourceUrl(props.get(URL_KEY));
-		dsi.setJdbcDriver(props.get(DRIVER_KEY));
-		dsi.setMinConnections(MIN_CONNECTIONS);
-		dsi.setMaxConnections(MAX_CONNECTIONS);
-
-		return dsi;
-	}
-
-	/**
-	 * Returns a list of connection names configured in the properties object.
-	 */
-	private List<String> extractNames(Map<String, String> props) {
-		Iterator<?> it = props.keySet().iterator();
-		List<String> list = new ArrayList<>();
-
-		while (it.hasNext()) {
-			String key = (String) it.next();
-
-			int dotInd = key.indexOf('.');
-			if (dotInd <= 0 || dotInd >= key.length()) {
-				continue;
-			}
-
-			String name = key.substring(0, dotInd);
-			if (!list.contains(name)) {
-				list.add(name);
-			}
-		}
-
-		return list;
-	}
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/FlavoredDbHelper.java b/cayenne/src/test/java/org/apache/cayenne/unit/FlavoredDbHelper.java
similarity index 97%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/FlavoredDbHelper.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/FlavoredDbHelper.java
index 051ddc786..405e13ee6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/FlavoredDbHelper.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/FlavoredDbHelper.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.map.DataMap;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/PeopleProjectCase.java b/cayenne/src/test/java/org/apache/cayenne/unit/PeopleProjectCase.java
index 70dc02632..1a31e25a5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/PeopleProjectCase.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/PeopleProjectCase.java
@@ -19,7 +19,6 @@
 package org.apache.cayenne.unit;
 
 import org.apache.cayenne.test.jdbc.DbHelper;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java
deleted file mode 100644
index f885a035a..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.unit;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.dba.derby.DerbyAdapter;
-import org.apache.cayenne.dba.h2.H2Adapter;
-import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter;
-import org.apache.cayenne.dba.sqlite.SQLiteAdapter;
-import org.apache.cayenne.unit.testcontainers.Db2ContainerProvider;
-import org.apache.cayenne.unit.testcontainers.MariaDbContainerProvider;
-import org.apache.cayenne.unit.testcontainers.MysqlContainerProvider;
-import org.apache.cayenne.unit.testcontainers.OracleContainerProvider;
-import org.apache.cayenne.unit.testcontainers.PostgresContainerProvider;
-import org.apache.cayenne.unit.testcontainers.SqlServerContainerProvider;
-import org.apache.cayenne.unit.testcontainers.TestContainerProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testcontainers.containers.JdbcDatabaseContainer;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-public class TestDataSourceDescriptorFactory {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(TestDataSourceDescriptorFactory.class);
-
-    private static final String PROPERTIES_FILE = "connection.properties";
-    private static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
-    private static final String CONNECTION_DB_VERSION = "cayenneTestDbVersion";
-    private static final String ADAPTER_KEY_MAVEN = "cayenneAdapter";
-    private static final String USER_NAME_KEY_MAVEN = "cayenneJdbcUsername";
-    private static final String PASSWORD_KEY_MAVEN = "cayenneJdbcPassword";
-    private static final String URL_KEY_MAVEN = "cayenneJdbcUrl";
-    private static final String DRIVER_KEY_MAVEN = "cayenneJdbcDriver";
-
-
-    public static UnitDataSourceDescriptor create() {
-
-        Map<String, String> propertiesMap = new HashMap<>();
-
-        File file = connectionPropertiesFile();
-        if (file.exists()) {
-            Properties properties = new Properties();
-            properties.load(new FileReader(file));
-            properties.forEach((k, v) -> propertiesMap.put(k.toString(), v.toString()));
-        }
-
-        ConnectionProperties connectionProperties = new ConnectionProperties(propertiesMap);
-        LOGGER.info("Loaded  " + connectionProperties.size() + " DataSource configurations from properties file");
-
-        String connectionKey = property(CONNECTION_NAME_KEY);
-        if (connectionKey == null) {
-            connectionKey = "hsql";
-        }
-
-        LOGGER.info("Connection key: " + connectionKey);
-        UnitDataSourceDescriptor connectionInfo = connectionProperties.getConnection(connectionKey);
-
-        // attempt default if invalid key is specified
-        if (connectionInfo == null) {
-            connectionInfo = checkInMemoryDataSource(connectionKey);
-        }
-
-        if (connectionInfo == null) {
-            connectionInfo = checkTestContainersDataSource(connectionKey);
-        }
-
-        connectionInfo = applyOverrides(connectionInfo);
-
-        if (connectionInfo == null) {
-            throw new ConfigurationException("No connection info for key: " + connectionKey);
-        }
-
-        LOGGER.info("loaded connection info: " + connectionInfo);
-        return connectionInfo;
-    }
-
-    private static UnitDataSourceDescriptor checkInMemoryDataSource(String connectionKey) {
-        return switch (connectionKey) {
-            case "hsql" -> {
-                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
-                descriptor.setAdapterClassName(HSQLDBAdapter.class.getName());
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                descriptor.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false");
-                descriptor.setJdbcDriver("org.hsqldb.jdbcDriver");
-                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "h2" -> {
-                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
-                descriptor.setAdapterClassName(H2Adapter.class.getName());
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                descriptor.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;");
-                descriptor.setJdbcDriver("org.h2.Driver");
-                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "derby" -> {
-                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
-                descriptor.setAdapterClassName(DerbyAdapter.class.getName());
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                descriptor.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
-                descriptor.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
-                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "sqlite" -> {
-                UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor();
-                descriptor.setAdapterClassName(SQLiteAdapter.class.getName());
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                descriptor.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text");
-                descriptor.setJdbcDriver("org.sqlite.JDBC");
-                descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-                descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            default -> null;
-        };
-    }
-
-    private static UnitDataSourceDescriptor checkTestContainersDataSource(String connectionKey) {
-
-        // special case for the testcontainers profile
-        if (!connectionKey.endsWith("-tc")) {
-            return null;
-        }
-
-        String db = connectionKey.substring(0, connectionKey.length() - 3);
-
-        TestContainerProvider testContainerProvider = switch (db) {
-            case "mysql" -> new MysqlContainerProvider();
-            case "mariadb" -> new MariaDbContainerProvider();
-            case "postgres" -> new PostgresContainerProvider();
-            case "sqlserver" -> new SqlServerContainerProvider();
-            case "oracle" -> new OracleContainerProvider();
-            case "db2" -> new Db2ContainerProvider();
-            default -> null;
-        };
-
-        if (testContainerProvider == null) {
-            return null;
-        }
-
-        String version = System.getProperty(CONNECTION_DB_VERSION);
-        JdbcDatabaseContainer<?> container = testContainerProvider.startContainer(version);
-
-        UnitDataSourceDescriptor sourceInfo = new UnitDataSourceDescriptor();
-        sourceInfo.setAdapterClassName(testContainerProvider.getAdapterClass().getName());
-        sourceInfo.setUserName(container.getUsername());
-        sourceInfo.setPassword(container.getPassword());
-        sourceInfo.setDataSourceUrl(container.getJdbcUrl());
-        sourceInfo.setJdbcDriver(container.getDriverClassName());
-        sourceInfo.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-        sourceInfo.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        return sourceInfo;
-    }
-
-    private static File connectionPropertiesFile() {
-        return new File(cayenneUserDir(), PROPERTIES_FILE);
-    }
-
-    private static File cayenneUserDir() {
-        File homeDir = new File(System.getProperty("user.home"));
-        return new File(homeDir, ".cayenne");
-    }
-
-    private static UnitDataSourceDescriptor applyOverrides(UnitDataSourceDescriptor connectionInfo) {
-        String adapter = System.getProperty(ADAPTER_KEY_MAVEN);
-        String user = System.getProperty(USER_NAME_KEY_MAVEN);
-        String pass = System.getProperty(PASSWORD_KEY_MAVEN);
-        String url = System.getProperty(URL_KEY_MAVEN);
-        String driver = System.getProperty(DRIVER_KEY_MAVEN);
-        // no overrides, do nothing
-        if (adapter == null && user == null && pass == null && url == null && driver == null) {
-            return connectionInfo;
-        }
-
-        if (connectionInfo == null) {
-            // only create a brand new DSI if overrides contains a DB url...
-            if (url == null) {
-                return null;
-            }
-
-            connectionInfo = new UnitDataSourceDescriptor();
-            connectionInfo.setMinConnections(ConnectionProperties.MIN_CONNECTIONS);
-            connectionInfo.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS);
-        }
-
-        connectionInfo = connectionInfo.copy();
-        if (adapter != null) {
-            connectionInfo.setAdapterClassName(adapter);
-        }
-
-        if (user != null) {
-            connectionInfo.setUserName(user);
-        }
-
-        if (pass != null) {
-            connectionInfo.setPassword(pass);
-        }
-
-        if (url != null) {
-            connectionInfo.setDataSourceUrl(url);
-        }
-
-        if (driver != null) {
-            connectionInfo.setJdbcDriver(driver);
-        }
-
-        return connectionInfo;
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java b/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java
deleted file mode 100644
index 9f2e85cb9..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.unit;
-
-import org.apache.cayenne.configuration.DataSourceDescriptor;
-
-/**
- * Extension of the {@link DataSourceDescriptor} for tests that adds adapterClassName field to it.
- */
-public class UnitDataSourceDescriptor extends DataSourceDescriptor {
-
-    protected String adapterClassName;
-
-    public String getAdapterClassName() {
-        return adapterClassName;
-    }
-
-    public void setAdapterClassName(String adapterClassName) {
-        this.adapterClassName = adapterClassName;
-    }
-
-    public UnitDataSourceDescriptor copy() {
-        UnitDataSourceDescriptor copy = new UnitDataSourceDescriptor();
-        copy.setDataSourceUrl(getDataSourceUrl());
-        copy.setJdbcDriver(getJdbcDriver());
-        copy.setUserName(getUserName());
-        copy.setPassword(getPassword());
-        copy.setAdapterClassName(getAdapterClassName());
-        copy.setMinConnections(getMinConnections());
-        copy.setMaxConnections(getMaxConnections());
-        return copy;
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
new file mode 100644
index 000000000..3736d2811
--- /dev/null
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
@@ -0,0 +1,106 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    https://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.unit.datasource;
+
+import org.apache.cayenne.configuration.DataSourceDescriptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+class DataSourceConfigFile {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfigFile.class);
+
+    private static final String PROPERTIES_FILE = "connection.properties";
+
+    private static final String USER_NAME_KEY = "jdbc.username";
+    private static final String PASSWORD_KEY = "jdbc.password";
+    private static final String URL_KEY = "jdbc.url";
+    private static final String DRIVER_KEY = "jdbc.driver";
+
+    public static Map<String, DataSourceDescriptor> load() {
+
+        File cayenneDir = new File(new File(System.getProperty("user.home")), ".cayenne");
+        File file = new File(cayenneDir, PROPERTIES_FILE);
+        if (!file.exists()) {
+            return Map.of();
+        }
+
+        Properties properties = loadProperties(file);
+        Map<String, DataSourceDescriptor> descriptors = new HashMap<>();
+        descriptorNames(properties).forEach(n -> descriptors.put(n, buildDataSourceDescriptor(n, properties)));
+
+        return descriptors;
+    }
+
+    private static Properties loadProperties(File file) {
+
+        LOGGER.info("Loading DataSource configurations from {}", file.getAbsolutePath());
+
+        Properties properties = new Properties();
+
+        try (FileReader r = new FileReader(file)) {
+            properties.load(r);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return properties;
+    }
+
+    private static DataSourceDescriptor buildDataSourceDescriptor(String name, Properties props) {
+        DataSourceDescriptor dsi = new DataSourceDescriptor();
+
+        dsi.setUserName(props.getProperty(name + "." + USER_NAME_KEY));
+        dsi.setPassword(props.getProperty(name + "." + PASSWORD_KEY));
+        dsi.setDataSourceUrl(props.getProperty(name + "." + URL_KEY));
+        dsi.setJdbcDriver(props.getProperty(name + "." + DRIVER_KEY));
+        dsi.setMinConnections(DataSourceConfigLoader.MIN_CONNECTIONS);
+        dsi.setMaxConnections(DataSourceConfigLoader.MAX_CONNECTIONS);
+
+        return dsi;
+    }
+
+    private static Set<String> descriptorNames(Properties props) {
+        Iterator<?> it = props.keySet().iterator();
+        Set<String> names = new HashSet<>();
+
+        while (it.hasNext()) {
+            String key = (String) it.next();
+
+            int dotInd = key.indexOf('.');
+            if (dotInd <= 0) {
+                continue;
+            }
+
+            names.add(key.substring(0, dotInd));
+        }
+
+        return names;
+    }
+}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
new file mode 100644
index 000000000..936d69721
--- /dev/null
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
@@ -0,0 +1,196 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    https://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.unit.datasource;
+
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
+import org.apache.cayenne.unit.testcontainers.Db2ContainerStarter;
+import org.apache.cayenne.unit.testcontainers.DbContainerStarter;
+import org.apache.cayenne.unit.testcontainers.MariaDbContainerStarter;
+import org.apache.cayenne.unit.testcontainers.MysqlContainerStarter;
+import org.apache.cayenne.unit.testcontainers.OracleContainerStarter;
+import org.apache.cayenne.unit.testcontainers.PostgresContainerStarter;
+import org.apache.cayenne.unit.testcontainers.SqlServerContainerStarter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.JdbcDatabaseContainer;
+
+public class DataSourceConfigLoader {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DataSourceConfigLoader.class);
+
+    private static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
+    private static final String CONNECTION_DB_VERSION = "cayenneTestDbVersion";
+    private static final String ADAPTER_KEY_MAVEN = "cayenneAdapter";
+    private static final String USER_NAME_KEY_MAVEN = "cayenneJdbcUsername";
+    private static final String PASSWORD_KEY_MAVEN = "cayenneJdbcPassword";
+    private static final String URL_KEY_MAVEN = "cayenneJdbcUrl";
+    private static final String DRIVER_KEY_MAVEN = "cayenneJdbcDriver";
+
+    static final int MIN_CONNECTIONS = 1;
+    static final int MAX_CONNECTIONS = 3;
+
+    public static DataSourceDescriptor load() {
+
+        String connectionName = System.getProperty(CONNECTION_NAME_KEY);
+        if (connectionName == null) {
+            LOGGER.info("DataSource name is not specified, assuming 'hsql'");
+            connectionName = "hsql";
+        } else {
+            LOGGER.info("DataSource name: {}", connectionName);
+        }
+
+        DataSourceDescriptor descriptor = DataSourceConfigFile.load().get(connectionName);
+
+        if (descriptor == null) {
+            descriptor = checkInMemoryDataSource(connectionName);
+        }
+
+        if (descriptor == null) {
+            descriptor = checkTestContainersDataSource(connectionName);
+        }
+
+        descriptor = applyOverrides(descriptor);
+
+        if (descriptor == null) {
+            throw new ConfigurationException("No DataSource descriptor for key: " + connectionName);
+        }
+
+        LOGGER.info("loaded DataSource descriptor: " + descriptor);
+        return descriptor;
+    }
+
+    private static DataSourceDescriptor checkInMemoryDataSource(String connectionName) {
+        return switch (connectionName) {
+            case "hsql" -> {
+                DataSourceDescriptor descriptor = new DataSourceDescriptor();
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false");
+                descriptor.setJdbcDriver("org.hsqldb.jdbcDriver");
+                descriptor.setMinConnections(MIN_CONNECTIONS);
+                descriptor.setMaxConnections(MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "h2" -> {
+                DataSourceDescriptor descriptor = new DataSourceDescriptor();
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;");
+                descriptor.setJdbcDriver("org.h2.Driver");
+                descriptor.setMinConnections(MIN_CONNECTIONS);
+                descriptor.setMaxConnections(MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "derby" -> {
+                DataSourceDescriptor descriptor = new DataSourceDescriptor();
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
+                descriptor.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
+                descriptor.setMinConnections(MIN_CONNECTIONS);
+                descriptor.setMaxConnections(MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            case "sqlite" -> {
+                DataSourceDescriptor descriptor = new DataSourceDescriptor();
+                descriptor.setUserName("sa");
+                descriptor.setPassword("");
+                descriptor.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text");
+                descriptor.setJdbcDriver("org.sqlite.JDBC");
+                descriptor.setMinConnections(MIN_CONNECTIONS);
+                descriptor.setMaxConnections(MAX_CONNECTIONS);
+                yield descriptor;
+            }
+            default -> null;
+        };
+    }
+
+    private static DataSourceDescriptor checkTestContainersDataSource(String connectionName) {
+
+        DbContainerStarter containerStarter = switch (connectionName) {
+            case "mysql-tc" -> new MysqlContainerStarter();
+            case "mariadb-tc" -> new MariaDbContainerStarter();
+            case "postgres-tc" -> new PostgresContainerStarter();
+            case "sqlserver-tc" -> new SqlServerContainerStarter();
+            case "oracle-tc" -> new OracleContainerStarter();
+            case "db2-tc" -> new Db2ContainerStarter();
+            default -> null;
+        };
+
+        if (containerStarter == null) {
+            return null;
+        }
+
+        String version = System.getProperty(CONNECTION_DB_VERSION);
+        JdbcDatabaseContainer<?> container = containerStarter.startContainer(version);
+
+        DataSourceDescriptor sourceInfo = new DataSourceDescriptor();
+        sourceInfo.setUserName(container.getUsername());
+        sourceInfo.setPassword(container.getPassword());
+        sourceInfo.setDataSourceUrl(container.getJdbcUrl());
+        sourceInfo.setJdbcDriver(container.getDriverClassName());
+        sourceInfo.setMinConnections(MIN_CONNECTIONS);
+        sourceInfo.setMaxConnections(MAX_CONNECTIONS);
+        return sourceInfo;
+    }
+
+    private static DataSourceDescriptor applyOverrides(DataSourceDescriptor descriptor) {
+
+        String adapter = System.getProperty(ADAPTER_KEY_MAVEN);
+        String user = System.getProperty(USER_NAME_KEY_MAVEN);
+        String pass = System.getProperty(PASSWORD_KEY_MAVEN);
+        String url = System.getProperty(URL_KEY_MAVEN);
+        String driver = System.getProperty(DRIVER_KEY_MAVEN);
+
+        // no overrides, do nothing
+        if (adapter == null && user == null && pass == null && url == null && driver == null) {
+            return descriptor;
+        }
+
+        if (descriptor == null) {
+            // only create a brand new DSI if overrides contains a DB url...
+            if (url == null) {
+                return null;
+            }
+
+            descriptor = new DataSourceDescriptor();
+            descriptor.setMinConnections(MIN_CONNECTIONS);
+            descriptor.setMaxConnections(MAX_CONNECTIONS);
+        }
+
+        if (user != null) {
+            descriptor.setUserName(user);
+        }
+
+        if (pass != null) {
+            descriptor.setPassword(pass);
+        }
+
+        if (url != null) {
+            descriptor.setDataSourceUrl(url);
+        }
+
+        if (driver != null) {
+            descriptor.setJdbcDriver(driver);
+        }
+
+        return descriptor;
+    }
+}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
index 69b085c28..49859ead3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_clob.ClobMaster;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
index a44ef1a29..d58e8c6ee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.FkOfDifferentType;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
index 0ac51936c..990a162d4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.test.jdbc.DbHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.ReflexiveAndToOne;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseBatchQueryBuilderFactoryProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseBatchQueryBuilderFactoryProvider.java
deleted file mode 100644
index 28fb3941c..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseBatchQueryBuilderFactoryProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.unit.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
-import org.apache.cayenne.access.translator.batch.DefaultBatchTranslatorFactory;
-import org.apache.cayenne.di.Provider;
-
-public class RuntimeCaseBatchQueryBuilderFactoryProvider implements
-        Provider<BatchTranslatorFactory> {
-
-    public BatchTranslatorFactory get() throws ConfigurationException {
-        return new DefaultBatchTranslatorFactory();
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
deleted file mode 100644
index 35636964d..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.unit.runtime;
-
-import org.apache.cayenne.access.DefaultObjectMapRetainStrategy;
-import org.apache.cayenne.access.ObjectMapRetainStrategy;
-import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
-import org.apache.cayenne.access.types.*;
-import org.apache.cayenne.configuration.ConfigurationNameMapper;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.DataMapLoader;
-import org.apache.cayenne.configuration.DefaultConfigurationNameMapper;
-import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
-import org.apache.cayenne.configuration.DefaultRuntimeProperties;
-import org.apache.cayenne.configuration.ObjectStoreFactory;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.configuration.runtime.CoreModuleExtender;
-import org.apache.cayenne.configuration.runtime.PkGeneratorFactoryProvider;
-import org.apache.cayenne.configuration.xml.DataChannelMetaData;
-import org.apache.cayenne.configuration.xml.DefaultHandlerFactory;
-import org.apache.cayenne.configuration.xml.HandlerFactory;
-import org.apache.cayenne.configuration.xml.NoopDataChannelMetaData;
-import org.apache.cayenne.configuration.xml.XMLDataMapLoader;
-import org.apache.cayenne.configuration.xml.XMLReaderProvider;
-import org.apache.cayenne.dba.JdbcPkGenerator;
-import org.apache.cayenne.dba.PkGenerator;
-import org.apache.cayenne.dba.db2.DB2Adapter;
-import org.apache.cayenne.dba.db2.DB2PkGenerator;
-import org.apache.cayenne.dba.derby.DerbyAdapter;
-import org.apache.cayenne.dba.derby.DerbyPkGenerator;
-import org.apache.cayenne.dba.frontbase.FrontBaseAdapter;
-import org.apache.cayenne.dba.frontbase.FrontBasePkGenerator;
-import org.apache.cayenne.dba.h2.H2Adapter;
-import org.apache.cayenne.dba.h2.H2PkGenerator;
-import org.apache.cayenne.dba.ingres.IngresAdapter;
-import org.apache.cayenne.dba.ingres.IngresPkGenerator;
-import org.apache.cayenne.dba.mysql.MySQLAdapter;
-import org.apache.cayenne.dba.mysql.MySQLPkGenerator;
-import org.apache.cayenne.dba.oracle.Oracle8Adapter;
-import org.apache.cayenne.dba.oracle.OracleAdapter;
-import org.apache.cayenne.dba.oracle.OraclePkGenerator;
-import org.apache.cayenne.dba.postgres.PostgresAdapter;
-import org.apache.cayenne.dba.postgres.PostgresPkGenerator;
-import org.apache.cayenne.dba.sqlserver.SQLServerAdapter;
-import org.apache.cayenne.dba.sybase.SybaseAdapter;
-import org.apache.cayenne.dba.sybase.SybasePkGenerator;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.ClassLoaderManager;
-import org.apache.cayenne.di.Key;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
-import org.apache.cayenne.reflect.generic.DefaultValueComparisonStrategyFactory;
-import org.apache.cayenne.reflect.generic.ValueComparisonStrategyFactory;
-import org.apache.cayenne.resource.ClassLoaderResourceLocator;
-import org.apache.cayenne.resource.ResourceLocator;
-import org.xml.sax.XMLReader;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-public class RuntimeCaseModule implements Module {
-
-    public void configure(Binder binder) {
-
-        binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
-        binder.bind(PkGenerator.class).to(JdbcPkGenerator.class);
-
-        new RuntimeCaseModuleExtender(binder)
-                .initAllExtensions()
-
-                .addPkGenerator(DB2Adapter.class, DB2PkGenerator.class)
-                .addPkGenerator(DerbyAdapter.class, DerbyPkGenerator.class)
-                .addPkGenerator(FrontBaseAdapter.class, FrontBasePkGenerator.class)
-                .addPkGenerator(H2Adapter.class, H2PkGenerator.class)
-                .addPkGenerator(IngresAdapter.class, IngresPkGenerator.class)
-                .addPkGenerator(MySQLAdapter.class, MySQLPkGenerator.class)
-                .addPkGenerator(OracleAdapter.class, OraclePkGenerator.class)
-                .addPkGenerator(Oracle8Adapter.class, OraclePkGenerator.class)
-                .addPkGenerator(PostgresAdapter.class, PostgresPkGenerator.class)
-                .addPkGenerator(SQLServerAdapter.class, SybasePkGenerator.class)
-                .addPkGenerator(SybaseAdapter.class, SybasePkGenerator.class)
-
-                // configure extended types
-                .addDefaultExtendedType(new VoidType())
-                .addDefaultExtendedType(new BigDecimalType())
-                .addDefaultExtendedType(new BooleanType())
-                .addDefaultExtendedType(new ByteArrayType(false, true))
-                .addDefaultExtendedType(new ByteType(false))
-                .addDefaultExtendedType(new CharType(false, true))
-                .addDefaultExtendedType(new DateType())
-                .addDefaultExtendedType(new DoubleType())
-                .addDefaultExtendedType(new FloatType())
-                .addDefaultExtendedType(new IntegerType())
-                .addDefaultExtendedType(new LongType())
-                .addDefaultExtendedType(new ShortType(false))
-                .addDefaultExtendedType(new TimeType())
-                .addDefaultExtendedType(new TimestampType())
-                .addDefaultExtendedType(new UtilDateType())
-                .addDefaultExtendedType(new CalendarType<>(GregorianCalendar.class))
-                .addDefaultExtendedType(new CalendarType<>(Calendar.class))
-                .addDefaultExtendedType(new DurationType())
-
-                .addExtendedTypeFactory(new InternalUnsupportedTypeFactory())
-
-                .addValueObjectType(BigIntegerValueType.class)
-                .addValueObjectType(BigDecimalValueType.class)
-                .addValueObjectType(UUIDValueType.class)
-                .addValueObjectType(LocalDateValueType.class)
-                .addValueObjectType(LocalTimeValueType.class)
-                .addValueObjectType(LocalDateTimeValueType.class)
-                .addValueObjectType(PeriodValueType.class)
-                .addValueObjectType(CharacterValueType.class);
-
-        binder.bind(ValueObjectTypeRegistry.class).to(DefaultValueObjectTypeRegistry.class);
-        binder.bind(ValueComparisonStrategyFactory.class).to(DefaultValueComparisonStrategyFactory.class);
-
-        binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
-        binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
-        binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class);
-
-        // this factory is a hack that allows to inject to DbAdapters loaded outside of
-        // server runtime... BatchQueryBuilderFactory is hardcoded and whatever is placed
-        // in the CoreModule is ignored
-        binder.bind(BatchTranslatorFactory.class).toProvider(RuntimeCaseBatchQueryBuilderFactoryProvider.class);
-        binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
-        binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
-        binder.bind(ResourceLocator.class).to(ClassLoaderResourceLocator.class);
-        binder.bind(Key.get(ResourceLocator.class, Constants.RESOURCE_LOCATOR)).to(ClassLoaderResourceLocator.class);
-        binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
-        binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
-        binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
-        binder.bind(HandlerFactory.class).to(DefaultHandlerFactory.class);
-        binder.bind(DataChannelMetaData.class).to(NoopDataChannelMetaData.class);
-
-        binder.bind(XMLReader.class).toProviderInstance(new XMLReaderProvider(false)).withoutScope();
-    }
-
-    // this class exists so that ToolsModule can call "initAllExtensions()" that is protected in CoreModuleExtender.
-    static class RuntimeCaseModuleExtender extends CoreModuleExtender {
-        public RuntimeCaseModuleExtender(Binder binder) {
-            super(binder);
-        }
-
-        @Override
-        protected CoreModuleExtender initAllExtensions() {
-            return super.initAllExtensions();
-        }
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
similarity index 78%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
index 50263652b..e22d3a9fb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
@@ -18,15 +18,12 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import java.time.Duration;
-
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.db2.DB2Adapter;
-import org.testcontainers.containers.Db2Container;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class Db2ContainerProvider extends TestContainerProvider {
+import java.time.Duration;
+
+public class Db2ContainerStarter extends DbContainerStarter {
 
     @Override
     public JdbcDatabaseContainer<?> startContainer(String version) {
@@ -40,20 +37,15 @@ public class Db2ContainerProvider extends TestContainerProvider {
     }
 
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
-        return new Db2Container(dockerImageName)
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+        return new org.testcontainers.containers.Db2Container(dockerImageName)
                 .withStartupTimeout(Duration.ofMinutes(15))
                 .withDatabaseName("testdb")
                 .acceptLicense();
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "ibmcom/db2";
     }
-
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return DB2Adapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/TestContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
similarity index 69%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/TestContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
index aef507d65..9c08bb00a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/TestContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
@@ -18,26 +18,21 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import org.apache.cayenne.dba.JdbcAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public abstract class TestContainerProvider {
-
-    abstract JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName);
-
-    abstract String getDockerImage();
-
-    public abstract Class<? extends JdbcAdapter> getAdapterClass();
+public abstract class DbContainerStarter {
 
     public JdbcDatabaseContainer<?> startContainer(String version) {
-        DockerImageName dockerImageName = DockerImageName.parse(getDockerImage());
-        if(version != null) {
-            dockerImageName = dockerImageName.withTag(version);
-        }
-        JdbcDatabaseContainer<?> container = createContainer(dockerImageName);
+        DockerImageName baseName = DockerImageName.parse(dockerImage());
+        DockerImageName fullName = version != null ? baseName.withTag(version) : baseName;
+
+        JdbcDatabaseContainer<?> container = createContainer(fullName);
         container.start();
         return container;
     }
 
+    protected abstract JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName);
+
+    protected abstract String dockerImage();
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
similarity index 77%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
index d7231bdb6..96681fbdc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
@@ -18,26 +18,20 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.mysql.MySQLAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MariaDBContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class MariaDbContainerProvider extends TestContainerProvider {
+public class MariaDbContainerStarter extends DbContainerStarter {
 
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
         return new MariaDBContainer<>(dockerImageName);
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "mariadb:10.3";
     }
 
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return MySQLAdapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
similarity index 82%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
index e52c98434..b0b480804 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
@@ -18,18 +18,16 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.mysql.MySQLAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MySQLContainer;
 import org.testcontainers.utility.DockerImageName;
 
 import java.util.Calendar;
 
-public class MysqlContainerProvider extends TestContainerProvider {
+public class MysqlContainerStarter extends DbContainerStarter {
 
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
         return new MySQLContainer<>(dockerImageName)
                 .withUrlParam("useUnicode", "true")
                 .withUrlParam("characterEncoding", "UTF-8")
@@ -41,12 +39,7 @@ public class MysqlContainerProvider extends TestContainerProvider {
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "mysql:8.2";
     }
-
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return MySQLAdapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
similarity index 75%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
index 4934c02ca..8d644fff8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
@@ -18,15 +18,12 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import java.time.Duration;
-
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.oracle.OracleAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.containers.OracleContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class OracleContainerProvider extends TestContainerProvider {
+import java.time.Duration;
+
+public class OracleContainerStarter extends DbContainerStarter {
 
     @Override
     public JdbcDatabaseContainer<?> startContainer(String version) {
@@ -35,18 +32,13 @@ public class OracleContainerProvider extends TestContainerProvider {
     }
 
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
-        return new OracleContainer(dockerImageName)
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+        return new org.testcontainers.containers.OracleContainer(dockerImageName)
                 .withStartupTimeout(Duration.ofMinutes(5));
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "gvenzl/oracle-xe:18-slim-faststart";
     }
-
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return OracleAdapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
similarity index 76%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
index 82dd9c871..c96c0d4ac 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
@@ -18,25 +18,18 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.postgres.PostgresAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.PostgreSQLContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class PostgresContainerProvider extends TestContainerProvider {
+public class PostgresContainerStarter extends DbContainerStarter {
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
         return new PostgreSQLContainer<>(dockerImageName);
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "postgres:9";
     }
-
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return PostgresAdapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
similarity index 77%
rename from cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerProvider.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
index 6a6560df0..6969a7014 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
@@ -18,27 +18,20 @@
  ****************************************************************/
 package org.apache.cayenne.unit.testcontainers;
 
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.dba.sqlserver.SQLServerAdapter;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MSSQLServerContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class SqlServerContainerProvider extends TestContainerProvider {
+public class SqlServerContainerStarter extends DbContainerStarter {
     @Override
-    JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
+    protected JdbcDatabaseContainer<?> createContainer(DockerImageName dockerImageName) {
         return new MSSQLServerContainer<>(dockerImageName)
                 .withUrlParam("sendTimeAsDatetime", "false")
                 .acceptLicense();
     }
 
     @Override
-    String getDockerImage() {
+    protected String dockerImage() {
         return "mcr.microsoft.com/mssql/server";
     }
-
-    @Override
-    public Class<? extends JdbcAdapter> getAdapterClass() {
-        return SQLServerAdapter.class;
-    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
index 62957411d..e9068fa88 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
index adc1d32de..d7cfd2f86 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
index 46cb2a2c1..1b7eb272b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.value.json;
 import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.testdo.json.JsonOther;
 import org.apache.cayenne.testdo.json.JsonVarchar;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.unit.CayenneProjects;
 import org.apache.cayenne.unit.CayenneTestsEnv;
 import org.apache.cayenne.value.Json;
 import org.junit.jupiter.api.Test;