@@ -39,66 +39,29 @@ public class ResponseMapperTests
3939 [ ClassInitialize ]
4040 public static void ClassInitialize ( TestContext context )
4141 {
42- // Load mapping.json from embedded resource
43- var assembly = Assembly . GetExecutingAssembly ( ) ;
44- var assemblyName = assembly . GetName ( ) . Name ;
45-
46- // DEBUG: Print assembly and resource information
47- Console . WriteLine ( $ "[DEBUG] Assembly Name: { assemblyName } ") ;
48- Console . WriteLine ( $ "[DEBUG] Assembly Location: { assembly . Location } ") ;
49- Console . WriteLine ( $ "[DEBUG] Assembly Full Name: { assembly . FullName } ") ;
50-
51- // Build resource names dynamically based on current assembly
52- var mappingResourceName = $ "{ assemblyName } .Custom.TestData.mapping.json";
53- var aliasesResourceName = $ "{ assemblyName } .Custom.TestData.property-aliases.json";
54-
55- Console . WriteLine ( $ "[DEBUG] Looking for mapping resource: { mappingResourceName } ") ;
56- Console . WriteLine ( $ "[DEBUG] Looking for aliases resource: { aliasesResourceName } ") ;
57-
58- // DEBUG: List all available embedded resources
59- Console . WriteLine ( "[DEBUG] Available embedded resources in assembly:" ) ;
60- var resourceNames = assembly . GetManifestResourceNames ( ) ;
61- if ( resourceNames . Length == 0 )
62- {
63- Console . WriteLine ( "[DEBUG] No embedded resources found!" ) ;
64- }
65- else
66- {
67- foreach ( var resourceName in resourceNames . OrderBy ( r => r ) )
68- {
69- Console . WriteLine ( $ "[DEBUG] - { resourceName } ") ;
70- }
71- }
72-
73- // Read mapping.json
74- using ( var stream = assembly . GetManifestResourceStream ( mappingResourceName ) )
42+ // Read mapping.json using robust resource loading (same pattern as Utils.cs)
43+ using ( var stream = GetResourceStream ( "mapping.json" ) )
7544 {
7645 if ( stream == null )
7746 {
78- Console . WriteLine ( $ "[ERROR] Could not find embedded resource: { mappingResourceName } ") ;
79- Console . WriteLine ( $ "[ERROR] This suggests the embedded resources are not properly included in the assembly build.") ;
80- throw new FileNotFoundException ( $ "Could not find embedded resource: { mappingResourceName } ") ;
47+ throw new FileNotFoundException ( "Could not find embedded resource: mapping.json" ) ;
8148 }
8249
83- Console . WriteLine ( $ "[DEBUG] Successfully found mapping resource: { mappingResourceName } ") ;
8450 using ( var reader = new StreamReader ( stream ) )
8551 {
8652 var jsonContent = reader . ReadToEnd ( ) ;
87- Console . WriteLine ( $ "[DEBUG] Mapping resource content length: { jsonContent . Length } characters") ;
8853 _mappingJson = JsonDocument . Parse ( jsonContent ) ;
8954 }
9055 }
9156
92- // Read property-aliases.json
93- using ( var stream = assembly . GetManifestResourceStream ( aliasesResourceName ) )
57+ // Read property-aliases.json using robust resource loading
58+ using ( var stream = GetResourceStream ( "property-aliases.json" ) )
9459 {
9560 if ( stream != null )
9661 {
97- Console . WriteLine ( $ "[DEBUG] Successfully found aliases resource: { aliasesResourceName } ") ;
9862 using ( var reader = new StreamReader ( stream ) )
9963 {
10064 var aliasContent = reader . ReadToEnd ( ) ;
101- Console . WriteLine ( $ "[DEBUG] Aliases resource content length: { aliasContent . Length } characters") ;
10265 _propertyAliasesJson = JsonDocument . Parse ( aliasContent ) ;
10366
10467 // Convert to dictionary for fast lookup
@@ -108,17 +71,51 @@ public static void ClassInitialize(TestContext context)
10871 {
10972 _propertyAliases [ alias . Name ] = alias . Value . GetString ( ) ;
11073 }
111- Console . WriteLine ( $ "[DEBUG] Loaded { _propertyAliases . Count } property aliases") ;
11274 }
11375 }
11476 else
11577 {
116- Console . WriteLine ( $ "[DEBUG] Property aliases resource not found: { aliasesResourceName } (this is optional)") ;
11778 _propertyAliases = new Dictionary < string , string > ( ) ;
11879 }
11980 }
120-
121- Console . WriteLine ( "[DEBUG] ClassInitialize completed successfully" ) ;
81+ }
82+
83+ /// <summary>
84+ /// Gets embedded resource stream using partial name matching (same pattern as Utils.cs)
85+ /// </summary>
86+ private static Stream GetResourceStream ( string resourceName )
87+ {
88+ Assembly assembly = Assembly . GetExecutingAssembly ( ) ;
89+ var resource = FindResourceName ( assembly , resourceName ) ;
90+ if ( resource == null )
91+ {
92+ assembly = Assembly . GetCallingAssembly ( ) ;
93+ resource = FindResourceName ( assembly , resourceName ) ;
94+ }
95+
96+ return resource != null ? assembly . GetManifestResourceStream ( resource ) : null ;
97+ }
98+
99+ /// <summary>
100+ /// Finds resource name using case-insensitive partial matching (same pattern as Utils.cs)
101+ /// </summary>
102+ private static string FindResourceName ( Assembly assembly , string partialName )
103+ {
104+ var resources = FindResourceName ( assembly , s => s . IndexOf ( partialName , StringComparison . OrdinalIgnoreCase ) >= 0 ) ;
105+ return resources . FirstOrDefault ( ) ;
106+ }
107+
108+ /// <summary>
109+ /// Finds resource names matching predicate (same pattern as Utils.cs)
110+ /// </summary>
111+ private static IEnumerable < string > FindResourceName ( Assembly assembly , Predicate < string > match )
112+ {
113+ var allResources = assembly . GetManifestResourceNames ( ) ;
114+ foreach ( var resource in allResources )
115+ {
116+ if ( match ( resource ) )
117+ yield return resource ;
118+ }
122119 }
123120
124121 [ ClassCleanup ]
0 commit comments