Web sitesinde belgelenmemiş ve insanlar çerçeveyi oluştururken sorun yaşıyor gibi görünüyor. Birisi örnek bir proje kurulumu için adım adım bir giriş gösterebilir mi?
Yanıtlar:
Arlaharen'in söylediği şey temelde doğruydu, ancak bağlayıcı hatalarınızı açıklayan kısmı dışarıda bıraktı. Öncelikle, uygulamanızı bir çalışma zamanı kitaplığı olarak CRT olmadan oluşturmanız gerekir . Uygulamanızın dağıtımını gerçekten basitleştirdiği için bunu her zaman yapmalısınız. Bunu yapmazsanız, tüm kullanıcılarınızın Visual C ++ Çalışma Zamanı Kitaplığı'nın yüklü olması gerekir ve sistemlerinde gizemli DLL'nin eksikliğinden şikayet etmeyenler ... bağlanmanın maliyeti olan fazladan birkaç yüz kilobayt için CRT'yi statik olarak, daha sonra destek olarak kendinizi bir çok baş ağrısından kurtarırsınız (bu konuda bana güvenin - bunu zor yoldan öğrendim!).
Her neyse, bunu yapmak için, hedefin özelliklerine -> C / C ++ -> Kod Oluşturma -> Çalışma Zamanı Kitaplığı'na gidersiniz ve Yayın yapınız için "Çok İş Parçacıklı" ve "Çok İş Parçacıklı Hata Ayıklama" olarak ayarlanması gerekir. Hata ayıklama yapınız.
Gtest kitaplığı da aynı şekilde oluşturulduğundan, onun doğru sürümüne bağladığınızdan emin olmanız gerekir , aksi takdirde bağlayıcı, çalışma zamanı kitaplığının başka bir kopyasını çeker, gördüğünüz hata budur (btw, this MFC kullanıyorsanız veya kullanmıyorsanız bir fark yaratmamalıdır). Hem Hata Ayıklama hem de Yayın modu olarak gtest oluşturmanız ve her iki kopyayı da saklamanız gerekir. Daha sonra Sürüm yapınızda gtest.lib / gtest_main.lib ve Hata Ayıklama yapınızda gtestd.lib / gtest_maind.lib ile bağlantı kurarsınız.
Ayrıca, uygulamanızın gtest başlık dosyalarının depolandığı dizine işaret ettiğinden emin olmanız gerekir (özellikler -> C / C ++ -> Genel -> Ek Dahil Etme Dizinlerinde), ancak bağlayıcı hatasına sahipseniz, varsayıyorum Bu bölümü zaten doğru bir şekilde almayı başardınız, yoksa ilk önce ilgilenmeniz gereken çok daha fazla derleyici hatası olurdu.
(Bu talimatlar, Test çerçevesinin Hata Ayıklama yapılandırması için çalışmasını sağlar. Aynı işlemi Sürüm yapılandırmasına uygulamak oldukça önemsiz olmalıdır.)
Google C ++ Test Çerçevesini Edinin
C:\gtest
Çerçeve Kitaplıklarını Oluşturun
C:\gtest\msvc\gtest.sln
Visual Studio'da açınTest Projenizi Oluşturun ve Yapılandırın
C:\gtest\include
C:\gtest\msvc\gtest\Debug
veya C:\gtest\msvc\gtest-md\Debug
ekleyingtestd.lib
Her Şeyin Çalıştığını Doğrulamak
main()
Fonksiyonu içeren Test Projenizde cpp'yi açın .Aşağıdaki kodu yapıştırın:
#include "stdafx.h"
#include <iostream>
#include "gtest/gtest.h"
TEST(sample_test_case, sample_test)
{
EXPECT_EQ(1, 1);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
std::getchar(); // keep console window open until Return keystroke
}
Hata Ayıkla> Hata Ayıklamayı Başlat
Her şey işe yaradıysa, konsol penceresinin açıldığını görmeli ve size birim test sonuçlarını göstermelisiniz.
Kurulumla ilgili bir eğitim videosu hazırladım: http://www.youtube.com/watch?v=mzSzwQOmMRs
Gtest'i oluşturduktan sonra, bunu yaptım:
Bundan sonra testlerimi uygun şekilde TEST veya TEST_F kullanarak yazıyorum ve bunları ana işlevimle birlikte derliyorum:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
gtest_main.lib
varsayılan main
işlevi içerir , bu nedenle main
açıkça kendi işlevinizi yazdıysanız, muhtemelen eklemek istemezsiniz .
Testler için kendi main () 'inizi yazmak istemiyorsanız, gtest_main.lib'de tanımlanan main () işlevini kullanabilirsiniz, ancak daha sonra VS2012'de "Giriş noktası tanımlanmalıdır" bağlayıcı hataları alırsınız. Test projenizde ProjectProperties-> Linker-> System-> SubSystem'i "Konsol" olarak ayarlayın çünkü bu, VS2012'yi "main ()" adında bir giriş noktası aramaya zorlar ve onu gtest_main.lib'de bulacaktır (bağlantı verdiyseniz düzgün bir şekilde).
Microsoft Visual Studio'da, yanlış yapılandırılmış çalışma zamanı kitaplık türü bağlantı hatalarına neden olur.
VS 2005 (ve 2008), varsayılan olarak Multithreaded DLL veya Multithreaded Debug DLL kullanır. Ancak Google Test kitaplığı, varsayılan olarak Çok iş parçacıklı veya Çok iş parçacıklı hata ayıklama çalışma zamanını kullanır.
Bu nedenle, google test kitaplığı için uygun çalışma zamanı kitaplığı türünü seçin. (Yapılandırma özelliklerinde -> Kod Oluşturma -> Çalışma Zamanı Kitaplığı).