Próbuję napisać test jednostkowy dla mojego projektu, ale nie pozwala on używać Menedżera konfiguracji. Teraz mój projekt jest skonfigurowany jakNie można użyć programu ConfigurationManager w projekcie testu jednostki
aplikacji ASP.Net (wszystkie strony aspx)
ProjectCore (wszystkie pliki C# - model)
ProjectTest (wszystkie testy)
w moim ProjectCore, Mogę uzyskać dostęp do obiektu ConfigurationManager z System.Configuration i przekazać informacje do projektu. Jednak, kiedy prowadził badania, w której bierze udział ConfigurationManager, pojawia się błąd
System.NullReferenceException: Object reference not set to an instance of an object.
Oto przykład testu
using System.Configuration;
[TestMethod]
public void TestDatabaseExists()
{
//Error when I declare ConfigurationManager
Assert.IsNotNull(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
}
w innych moich testów, ConfigurationManager.ConnectionStrings [ „ConnectionString” ] .ConnectionString jest tym, do czego ustawiam ciąg konfiguracyjny mojego adaptera danych i zwraca błąd zerowy w testach, ale nie wtedy, gdy faktycznie korzystam z witryny. Jakieś pomysły?
Robicie badanej jednostki w jednostce przetestować swoją koncentrację powinien być konkretny sposób próbuje przetestować i należy usunąć zbędne zależności. w takim przypadku spróbuj kpić/moleing (użyj MS Mole/Pex) klasa system.configuration; to da rozwiązanie na pewno. – Rahul
@JohnSaunders, więc w moim teście wyjątek NullReferenceException występuje, gdy faktycznie przypisuję ciąg do menedżera konfiguracji. na przykład ... String cs = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString – willykao
@JohnSaunders, chyba że ConfigurationManager ma wartość zerową tylko w przypadku testu jednostkowego (ponieważ nie dostaję tego błędu w rzeczywistej ASP.aplikacji sieciowej), zastanawiam się, czy mogę faktycznie użyć menedżera konfiguracji w testach – willykao