VS2012 projesinde, DllImport pinvoke kullanarak bir VS2010 C++ DLL çağrısı yapan bazı C# birim testleri var.vstest keşif motoru kilitleme DLL'leri önleme
Test projesi için önceden oluşturulmuş bir olay olarak, DLL'nin en son sürümünü sınava ilişkin ikili projeye kopyalarım.
Vstest.discoveryengine çalışıyorsa, bu tekrar tekrar başarısız olur. Görünen o ki 'keşif motoru' testleri yükler ve kilidi DLL'de tutar.
Vstest keşif motorunu öldürürsem, o zaman testleri yapabilir ve çalıştırabilirim. aksi halde yapı başarısız olur ve VS2012 önceki bir sürümü çalıştırmayı önerir (bir 'bu mesajı bir daha gösterme' seçeneğine sahip olmayan bir model iletişim kutusuyla birlikte) •
Testi zorlamak için yapabileceğim bir şey var mı Gerçekten sınamaları çalıştırırken veya arka plan bulma yürütülebilir dosyasını devre dışı bırakmak için DLL'yi kaldırma projesi?
Vstest.discoveryengine.x86, vstest.executionengine.x86'yi öldüren Kealakekua adlı bir yürütülebilir dosya oluşturarak bir geçici çözümle karşılaştım ve bununla birlikte ön hazırlık olayının ilk kısmı olarak dosyaları kopyalayabilir ve yapılandırabilir ama dosyam için görsel stüdyosuyla dövüşmemeyi tercih ederim.
DLL sınama sınıflarında kod aracılığıyla kod yüklemek için bir seçenek olabilir mi? – Joel
@Joel not - testler DLL'yi doğrudan yüklemiyor, test ettikleri kod yok; Üretim kodunu işini yapmak için gerekli olandan daha fazla karmaşıklaştırmak istemem. Test kodu ile test edilen montaj arasındaki bağlantı test kodu tarafında kırılabilirse de bu işe yarayabilir. –