2008-08-21 25 views
14

Próbuję przetestować niestandardowy plik konfiguracyjny, który napisałem, i chciałbym załadować dowolne konfiguracyjne XML do System.Configuration.Configuration dla każdego testu (zamiast umieszczania pliku konfiguracyjnego xml w pliku Tests.dll.config . Oznacza to, że chciałbym zrobić coś takiego:Czy istnieje sposób na uzyskanie instancji System.Configuration.Configuration na podstawie dowolnego kodu XML?

Configuration testConfig = new Configuration("<?xml version=\"1.0\"?><configuration>...</configuration>"); 
MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection"); 
Assert.That(section != null); 

jednak wygląda na to, ConfigurationManager tylko daje przykłady konfiguracji, które są skojarzone z plikiem EXE lub konfiguracji maszyna jest tam sposobem. załadować dowolny kod XML do instancji konfiguracji?

Odpowiedz

15

Tu jest rzeczywiście sposób odkryłem ....

Trzeba zdefiniować nową klasę dziedziczenie z oryginalnego sekcji konfiguracji następująco:

public class MyXmlCustomConfigSection : MyCustomConfigSection 
{ 
    public MyXmlCustomConfigSection (string configXml) 
    { 
     XmlTextReader reader = new XmlTextReader(new StringReader(configXml)); 
     DeserializeSection(reader); 
    } 
} 


Można wtedy instancji Twój obiekt ConfigurationSection następująco:

string configXml = "<?xml version=\"1.0\"?><configuration>...</configuration>"; 
MyCustomConfigSection config = new MyXmlCustomConfigSection(configXml); 

Mam nadzieję, że ktoś pomoże :-)

+0

rekwizyty, aby odpowiedzieć na jego pytanie. –

0

Patrząc na członków klasy, powiedziałbym, że odpowiedź brzmi prawdopodobnie nie *. Nie wiem, dlaczego Mrówko to zrobić, zamiast tworzyć własny plik konfiguracyjny XML.

* To nie jest, bez bałagan refleksji hacki

1

myślę czego szukasz ConfigurationManager. OpenMappedExeConfiguration

To pozwala otworzyć plik konfiguracyjny, który określić ze ścieżką pliku (owinięty wewnątrz ExeConfigurationFileMap)

Jeśli co drugi plakat powiedział jest prawdą, a nie chcesz, aby stworzyć zupełnie nowy Plik XML do testowania, a następnie zaleca się wprowadzenie zmian konfiguracji w samej metodzie testowania, a następnie uruchomienie testów w oparciu o świeżo zmienione dane konfiguracyjne.