2010-01-25 29 views
5

Bir MSTest birimi sınamasında DeploymentItem parametresi olarak statik bir değişken kullanmak istiyorum ancak bunu yapamıyorum.C# Statik değişkeni DeploymentItem parametresi olarak kullanarak

[TestMethod] 
[DeploymentItem(DLL)] 
[DeploymentItem(_xslPath)] 
public void XmlToResultsTest() { } 

I: birim test çalışır ve ben

Ancak

olarak yerini tanımlarken Sonra yaparken aşağıdaki DLL dosyası ile birlikte kopyalanması gereken bir XSL dosyası var ince,

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

Tamam tamam, ama sadece patikayı kendim monte kadar kirli görünüyor: Bu yapı hatasına olsun

Path.Combine kullanmak istediğiniz için çok mu aldayorum? Kayıp olduğum başka bir alternatif var mı? Sanırım XSL dosyasını kök çözüm dizinine koyabilirim, böylece yolun bir parçası olarak proje dizininde geçmek zorunda kalmam.

cevap

10

Öznitelikler yalnızca sabit dizeleri kullanabilir, bu nedenle: Hayır, bunu yapamazsınız (önceden birleştirilmiş sürümü veya literal birleştirme kullanmanız gerekir - Path.Combine değil). Test-proje dağıtım ayarlarını da kullanabilirsiniz (testrunconfig?), Fakat açıkçası ben sadece NUnit yaklaşımını kullanıp dosyayı (csproj, normal gibi) işaretlemeyi tercih ediyorum. MS bu tanımlamanın ayrı bir yol ekledi neden

0

Bu benim için çalışıyor ... anlamaya henüz:

[TestClass] 
[DeploymentItem(TestParams.ConfigFileName)] 
public class MyTest 
{ 
    private static class TestParams 
    { 
     public const string ConfigFileName = "TestConfig.xml"; 
    } 
// ... 
} 
İlgili konular