2013-06-06 39 views
15

C# konsolu uygulamasında test ayarları okunamıyor. Fonksiyonundan biri appconfig değerini okuyor ve biraz iş yapıyor.Birim testi

string host = ConfigurationManager.AppSettings["Host"] 

Konsol uygulamam için NUNIT sınamasını yazdım. Sınıf kütüphanesi kullanılarak birim test projesi oluşturuldu.

Ancak birim testim şimdi başarısız. Uygulama ayarlarımı okumadığından (uygulama ayarlarının olmadığını gösterir). Bunun nedeni nedir?
Konsol uygulamamı çalıştırdığımda, uygulama ayarlarını doğru okuyor.

cevap

29

Ünite test projeniz için bir app.config oluşturmalısınız. Birim testlerini çalıştırırken konsol uygulamanızın app.config dosyasına başvurulmayacaktır.

+3

içine geçerdi. ' ' –

+0

Evet, haklısınız – aquaraga

+0

Çalıştı. Bunu asla bilmiyordum. Yardım için teşekkürler. –

11

Birim test projeniz için başka bir yapılandırma dosyasında uygulama ayarlarını tanımlayabilirsiniz, ancak bağımlılık enjeksiyonunu kullanarak arayüzlere birim testi, birim testlerinizin daha yönetilebilir bölümler içerisine gireceği alanların bozulmasına yardımcı olabilir.

Yani sevdiği yapılandırma arayüzü olabilir:

public interface IConfiguration 
{ 
    public string Host { get; set; } 
} 

böyle (genellikle kurucusuna) bir parametre olarak bir IConfiguration sınıfını kabul edeceğini test etmek için sınıfı: Sonra

public class MyClass 
{ 
    IConfiguration _config; 
    public MyClass(IConfiguration config) 
    { 
     _config = config; 
    } 

    public void MyMethodToTest() 
    { 
    } 
} 

senin Test, arabiriminizi potansiyel olarak değiştirip birim testinizi etkileyebilecek bir harici konfigürasyon dosyasına bağlı olmaktan ziyade konfigürasyonu geçmek için kullanabilir:

[Test] 
public void Testing_MyMethodToTest() 
{ 
    // arrange 
    var config = new Configuration { Host = "My Test Host" }; 
    // act 
    new MyClass(config).MyMethodToTest(); 
    // Add assertion for unit test 
} 

Ve gerçek uygulama, yapılandırma sınıfı oluşturmak AppSettings'i gelen değer (ler) ile yük ve ben de benim test projesi için aşağıdaki eklemek zorunda anlamına Senin uygulanması

+0

Ancak, uygulamasının, yapılandırmasında test projesindeki uygulama ayarlarından yüklenmesi gerekir. –

+0

Uygulama ayarlarına ihtiyaç duymayacak bir test nasıl yazacağınıza örnek olarak eklendi – boniestlawyer