2013-07-17 14 views
9

64-bit (Windows MAPI ve Outlook x64'e bağlanır) kesinlikle çalışması gereken Outlook Redemption'u kullanarak bir uygulama için testler yazıyorum. Maalesef, hayatımın testini 64-bit'te yapmasını sağlayamam. .runsettings dosyasını (64-bit'i belirtecek şekilde düzenlenmiş) ve bir .testsettings dosyasını (ayrıca düzenlenmiş) kullanmayı denedim ve sonunda Test>TestSettings>Default Processor Architecture>64-bit'u seçtim, boşuna.MSTest 64-bit'i çalıştırmayı reddediyor mu?

her zaman, System.Environment.Is64BitProcess yanlış olduğunu ve Outlook ve MAPI bağlanmak için dll yüklemek zaman korkunç COM İstisna olsun: Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP)) 64 bit Outlook yüklü ve süreç erişmeye çalıştığınız olduğunu gösterir 32-bit.

Yeniden başlatma gerekli olabileceğinden bir yerde okurken ayarları değiştirdikten sonra VS 2012'yi yeniden başlattım. Başka önerisi olan var mı? Ben sadece bunu kayıt dışı testleri çalıştıran ve durumlarını bildiren bir konsol uygulaması olarak yazabilir, ancak bir sonraki adımım bu testleri otomatik yapıya entegre etmektir. Herhangi bir yardım büyük takdir edilecektir. .testsettings Host Ayarları sayfasının

Düzenleme

Ekran

İlginç enter image description here

Deney, ben küçük bir deney yaptı. Tek bir konsol uygulaması projesi ile yeni bir çözüm oluşturdum. Oraya yeni dönmüş bir kamu yöntemini koydum. Konsol uygulamasını çalıştırdığımda ve yürütmeyi durdurduğumda, baktım ve aslında 64-bit çalışıyor; Orada sorun yok. Daha sonra bir test projesi ekledim, yöntemi denen tek bir test oluşturdum. Ayrıca var is64 = Environment.Is64bitProcess ekledim ve sonra bir kesme noktası koydu.

Tahminen, herhangi bir seçeneği değiştirmeden, is64 yanlıştı. Test altındaki açılır listeden 64-bit varsayılan mimariyi seçtikten sonra çözümü temizledim ve testi tekrar çalıştırdım, aynı sonucu 32-bit çalıştırarak çalıştırdım. VS2012'yi yeniden başlattım, temizledim, oluşturdum, aynı sonuç. Test menüsünde bir test dosyası oluşturdum ve Test menüsüne başvurdum, temiz yapı, aynı, yeniden başlat, temiz, aynı inşa et. Test menüsünde bir test dosyası oluşturdum, <TargetPlatform>x64</TargetPlatform> setini belirledim, test menüsünde bunu tekrarladım ve aynı sonuçlarla geldi. QTAgent32.exe işlemi yürütmeye devam ediyor ve kesinlikle 64 bit çalıştıran taleplerimi kabul etmeyi reddediyor.

Yemin ederim, eğer QTAgent32.exe dosyasını silmek ve QTAgent adını bu ada göre yeniden adlandırmak gerekirse, yapacağım. İnatçı olmak istediği zaman bilgisayarlarımın boğazlarını tıka basamıyorum. Beni bir iş istasyonuna karşı görmek istemezseniz, birileri bana neyin yanlış gittiğini gösterir. Bilgisayarları düşün.

+0

Belki aptalca bir soru, ama bunların test çalıştırmanız için seçilen “Ayarlar” olduğundan emin misiniz? – Schaliasos

+0

Yup. Test menüsünün altındaki, o dosyaya karşılık gelen yol menüsü, yanında bir onay işaretine sahiptir. – CodeWarrior

+0

bunu 2012'de düzelttiler. 64-bitlik bir test bilgisayarı var. Diğerleri gibi corplags kullanabilirsiniz sadece en uzak 32-bit bayrak kaldırmak için ve sonra wow kayıt defteri düğümünden kopyalanması gereken bazı lisans kayıt defteri ayarı vardır ve executionhost msil için ayarlayın. Grubumda makineler oluşturmak için kayıt defteri ayarlarını ekleyemedik, testler için test meta verileri ve taslakları içeren bir proxy topluluğu oluşturan küçük bir uygulama yazdım, testler yürütüldüğünde proxy, test dll'lerini yükler ve gerçek testleri – user1985513

cevap

3

Bu, kapsamımın biraz dışında, ancak her iki projenin yapılandırma ayarları doğru şekilde ayarlanmış, değil mi? Bunları AnyCPU veya x64 için oluşturmaya ayarladınız mı?

Sadece Occam'ın Jiletine çalışıyorum ... VS'nin konfigürasyon ayarları yüzünden hayal kırıklığına uğramış olduğumu biliyorum.

+0

Gerçekten. AnyCPU ayarlandı, x64 makinesinde Windows 7 x64 tadıyla çalışıyorum. – CodeWarrior

11

Eğer VS2012'yi kullanırsanız, aşağıdaki gibi test ayarları aracılığıyla x64 platformunuzu seçebileceksiniz;

enter image description here

Bu örnekte ben .runsettings dosyaya bahsediyorum. ayarları

enter image description here

vardır ama dilek komut satırı aracılığıyla testi çalıştırmak için eğer bunu x64 için desteklemediği

test.dlls olarak yerine mstest ait vstest.console.exe kullanmak gerekir

aşağıda unutmayın: "\ Program Files (x86) \ Common7 \ IDE \ CommonExtensions Microsoft \ \ TestWindow \ C"

adımları

en vstest.console.exe bulacaksınız

  1. Açık CMD
  2. Şuraya git "C: \ Program Files (x86) \ Common7 \ IDE \ CommonExtensions Microsoft \ \ TestWindow \"
  3. vstest.console.exe "C yürütün: \ Projeler \ Test \ Test.Automation.Specs.dll"/ InIsolation /platform: x64

Not: Test.Automation.Specs.dll test projesi olduğunu ve bu yardım umut tam yol

tanımlamanız gerekir

2

Sadece şu anda aynı sorunla karşılaştım. Sorunu çözmek için takip edebileceğiniz adımlar. x86 dan x64 için birim testler için

  1. Anahtarı varsayılan işlemci mimarisi: Git> Test Ayarlar-> Varsayılan İşlemci Mimarisi> x64 Testi-için. Screenshot for changing the default processor architecture to x64 for test settings.
  2. Birim test projesi için Yapı ayarlarını x64 olarak değiştirin. Screenshot for changing the build settings to x64.
  3. Çözümü temizleyin ve ardından çözümü yeniden oluşturun. Ünite testleriniz şimdi test kaşifinde görünmeli ve artık bu konuya girmemelisiniz.

Kaynaklar

  1. Link to MSDN reference which explains how to resolve the issue.
+0

Cevabınız için teşekkür ederiz. Visual Studio'nun hangi sürümünü kullanıyorsunuz? Bu soruyu yayınladığım sırada Visual Studio 2012'yi kullanıyordum. Bu konuya hiçbir zaman geri dönmedim (aslında o zamandan beri üç kez işleri değiştirdim!) Bu yüzden Microsoft'un sadece test etmek yerine test için x64 desteğini tamamen uyguladığı umuluyor aslında olmadığı zaman yapıldı. – CodeWarrior

+1

Visual Studio 2015 kullanıyorum. – user3613932

+0

Bilinmesi güzel. MSTest, VS 2015'te 64-bit'de testleri çalıştırabilir. Teşekkürler! – CodeWarrior

İlgili konular