Nó không được ghi lại trên trang web và mọi người dường như đang gặp sự cố khi thiết lập khung. Ai đó có thể vui lòng giới thiệu từng bước cho thiết lập dự án mẫu không?
Câu trả lời:
Những gì Arlaharen nói về cơ bản là đúng, ngoại trừ việc anh ấy bỏ qua phần giải thích lỗi trình liên kết của bạn. Trước hết, bạn cần xây dựng ứng dụng của mình mà không có CRT làm thư viện thời gian chạy. Dù sao thì bạn cũng nên làm điều này, vì nó thực sự đơn giản hóa việc phân phối ứng dụng của bạn. Nếu bạn không làm điều này, thì tất cả người dùng của bạn cần cài đặt Thư viện thời gian chạy Visual C ++ và những người không phàn nàn về việc mất tích DLL bí ẩn trên hệ thống của họ ... với vài trăm kilobyte bổ sung mà nó phải trả để liên kết trong CRT tĩnh, bạn sẽ đỡ phải đau đầu sau này khi hỗ trợ (tin tưởng tôi về điều này - tôi đã học được nó một cách khó khăn!).
Dù sao, để thực hiện việc này, bạn đi tới thuộc tính của mục tiêu -> C / C ++ -> Tạo mã -> Thư viện thời gian chạy và nó cần được đặt là "Đa luồng" cho bản phát hành của bạn và "Gỡ lỗi đa luồng" cho bản dựng Gỡ lỗi của bạn.
Vì thư viện gtest được xây dựng theo cùng một cách, bạn cần đảm bảo rằng bạn đang liên kết với phiên bản chính xác của nó , nếu không trình liên kết sẽ lấy một bản sao khác của thư viện thời gian chạy, đó là lỗi bạn đã thấy (btw, điều này sẽ không tạo ra sự khác biệt nếu bạn đang sử dụng MFC). Bạn cần xây dựng gtest dưới dạng cả hai chế độ Gỡ lỗi và Phát hành và giữ cả hai bản sao. Sau đó, bạn liên kết với gtest.lib / gtest_main.lib trong bản dựng Phát hành và gtestd.lib / gtest_maind.lib trong bản dựng Gỡ lỗi của bạn.
Ngoài ra, bạn cần đảm bảo rằng ứng dụng của bạn trỏ đến thư mục lưu trữ tệp tiêu đề gtest (trong thuộc tính -> C / C ++ -> Chung -> Thư mục bao gồm bổ sung), nhưng nếu bạn gặp lỗi trình liên kết, tôi giả sử mà bạn đã quản lý để sửa phần này, nếu không, bạn sẽ có nhiều lỗi trình biên dịch hơn phải giải quyết trước.
(Các hướng dẫn này giúp khung thử nghiệm hoạt động cho cấu hình Gỡ lỗi. Sẽ khá đơn giản nếu áp dụng cùng một quy trình cho cấu hình Bản phát hành.)
Nhận Khung kiểm tra C ++ của Google
C:\gtest
Xây dựng Thư viện Khung
C:\gtest\msvc\gtest.sln
trong Visual StudioTạo và cấu hình dự án thử nghiệm của bạn
C:\gtest\include
C:\gtest\msvc\gtest\Debug
hoặc C:\gtest\msvc\gtest-md\Debug
, tùy thuộc vào vị trí của gtestd.libgtestd.lib
Xác minh mọi thứ hoạt động
main()
hàm.Dán mã sau:
#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
}
Gỡ lỗi> Bắt đầu gỡ lỗi
Nếu mọi thứ đều hoạt động, bạn sẽ thấy cửa sổ bảng điều khiển xuất hiện và hiển thị cho bạn kết quả kiểm tra đơn vị.
Tôi đã làm một video hướng dẫn về cách thiết lập: http://www.youtube.com/watch?v=mzSzwQOmMRs
Sau khi xây dựng gtest, đây là những gì tôi đã làm:
Sau đó, tôi chỉ viết các bài kiểm tra của mình bằng TEST hoặc TEST_F nếu thích hợp và biên dịch chúng cùng với hàm chính của tôi:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
gtest_main.lib
chứa hàm mặc định main
, vì vậy bạn có thể không muốn bao gồm nó nếu bạn đã viết một main
cách rõ ràng cho riêng mình .
Nếu bạn không muốn viết main () của riêng mình cho các bài kiểm tra, bạn có thể sử dụng hàm main () được định nghĩa trong gtest_main.lib nhưng sau đó bạn gặp lỗi trình liên kết "Điểm mục nhập phải được xác định" trong VS2012. Trong dự án thử nghiệm của bạn, đặt ProjectProperties-> Linker-> System-> SubSystem thành "Console" vì điều này sẽ buộc VS2012 phải tìm kiếm một điểm nhập có tên là "main ()" và sẽ tìm thấy nó trong gtest_main.lib (miễn là bạn đã liên kết nó vào đúng cách).
Trong Microsoft Visual Studio, loại thư viện thời gian chạy được định cấu hình sai gây ra lỗi liên kết.
VS 2005 (và 2008) sử dụng DLL đa luồng hoặc DLL gỡ lỗi đa luồng làm mặc định. Nhưng thư viện Kiểm tra của Google sử dụng thời gian chạy gỡ lỗi Mulithreaded hoặc Mulithreaded làm mặc định.
Vì vậy, hãy chọn loại thư viện thời gian chạy thích hợp cho thư viện thử nghiệm của google. (trong thuộc tính Cấu hình -> Tạo mã -> Thư viện thời gian chạy).
Nhiều lỗi, mất một thời gian để sửa chữa.
Dưới đây là các bước đơn giản:
# Tải xuống tệp ZIP Googletest từ: https://github.com/google/googletest
# Giải pháp studio trực quan của Googletest
Open C:\googletest\googletest\msvc\2010\gtest.sln
Change "Solution configuration"
from "Debug" to "Release"
Build Solution
creates gtest.lib
# Dự án của bạn:
Project Properties > Configuration Properties > VC++ Directories > Include Directories
append the following: ;C:\googletest\googletest\include
Project Properties > Configuration Properties > Linker > General > Additional Library Directories >
append the following: ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release
Project Properties > Configuration Properties > C/C++ > Runtime Library
Remove the value of the above. (or match it to Googletest project)