2014-07-01 18 views
10

Konsol uygulamasının Ana yöntemini sınama birimiyle ilgili bir sorum var. Standart imza sadece 1 parametresi içinde iletilmesini sağlamak için test edebilmek istiyorumC# Birim Testi (Nunit) bir konsol uygulamasının Ana yöntemi?

public static void Main(string[] args) 

olduğunu. Birden fazla parametre olduğunu geçirilen edilirse i testi başarısız olmasını istiyorum.

Bunu, MOQ ile statik bir yöntem olarak alay edebileceğimi düşünmüyorum.

Bu konuda herhangi bir deneyimi olan var mı?

Herhangi bir fikrin var mı?

Teşekkür

+0

Neden alay etmek gerekir? Aranamayan bağımlılıkları var mı? –

+0

Giriş, ana yönteminizin içinde çalışma zamanında kontrol edilmelidir. Ünite testiniz için bu neden önemlidir? – SBI

+0

Gelecek okuyucular için sadece bir not: İmza 'statik int Main' olarak değiştirilebiliyor ve bazen birim testlerini oluşturmak için bu dönüş sinyalini kullanabiliyorum – Simeon

cevap

18

senaryonuzdaki alay etmek hiçbir şey yoktur. Statik Program.Main, diğer herhangi bir yöntem gibi bir yöntemdir ve siz bunu test ederek.

static void yöntemiyle ilgili sorun, yalnızca istisnayı atar mı, yoksa giriş bağımsız değişkeniyle mi (veya diğer statik üyeler) etkileşime girdiğini doğrulayabilmenizdir. string[] ile etkileşime girecek hiçbir şey olmadığından, eski durumu test edebilirsiniz. Bununla birlikte, daha sağlam bir yaklaşım, Main numaralı mantığını no'lu bölüme ayırmak ve bunun yerine bileşeni test etmektir. Sadece bu sen iyice girdi argümanı işleme mantığını test etmenizi sağlar ama aynı zamanda Main az ya da çok bu kolaylaştırır:

public static void Main(string[] args) 
{ 
    var bootstrapper = new Bootstrapper(); 
    bootstrapper.Start(args); 
}