c++ - 未定义对 `vtable [CMakeLists.txt] 的引用(单元测试)
问题描述
在进行单元测试时,我遇到了几个错误。我的目标是查看我的 make->shipCost() 是否等于预期。
TEST(FactoryTestSet, USNShipCost) {
USN_Fleet_Factory* makeAShip;
USN_Ship *make;
makeAShip = new USN_Ship_Factory;
make = makeAShip->CreateAircraftCarrier("Aircraft Carrier");
EXPECT_EQ(make->shipCost(), 8);
make = makeAShip->CreateCruiser("Cruiser");
EXPECT_EQ(make->shipCost(), 5);
make = makeAShip->CreateDestroyer("Destroyer");
EXPECT_EQ(make->shipCost(), 3);
make = makeAShip->CreateFrigate("Frigate");
EXPECT_EQ(make->shipCost(), 2);
}
TEST(FactoryTestSet, PLANShipCost) {
PLAN_Fleet_Factory* makeAVessel;
PLAN_Ship *assemble;
makeAVessel = new PLAN_Ship_Factory;
assemble = makeAVessel->CreateAircraftCarrier("Aircraft Carrier");
EXPECT_EQ(assemble->shipCost(), 8);
assemble = makeAVessel->CreateCruiser("Cruiser");
EXPECT_EQ(assemble->shipCost(), 4);
assemble = makeAVessel->CreateDestroyer("Destroyer");
EXPECT_EQ(assemble->shipCost(), 3);
assemble = makeAVessel->CreateFrigate("Frigate");
EXPECT_EQ(assemble->shipCost(), 1);
}
我的一个基本子类的示例如下:
class GF_Class_Aircraft_Carrier : public USN_Ship{
private:
int shipPrice = 8;
int PI = 10;
public:
void accept(Visitor &v);
virtual void ShipName() {std::cout << "- USS Gerald R. Ford\n";}
virtual void shipHullNumber() {std::cout << "- CVN-75\n";}
void shipClassName() {std::cout << "- Gerald Ford Class Aircraft Carrier\n";}
void shipType() {std::cout << "- Aircraft Carrier\n";}
void arament() {std::cout << "- 40 F-35 Lightning's, 10 E-8 Growler Hornet's, 8 SH-60 Seahawk's\n";}
int shipCost() {std::cout << "- Ship Cost:$" << shipPrice << " billion\n"; return shipPrice;}
int powerIndex() {return PI;}
virtual void assignHomePort() {std::cout << "- Home Port: \n";}
virtual void assignAdmiral() {std::cout << "- Commanding Officer: \n";}
};
解决方案
推荐阅读
- callback - 如何在 razorpay 集成中使用 callback_url?
- kubernetes - Istio 的 `DestinationRule` 与 Kubernetes `Service` 的区别?
- r - 从 R 的 DB 中删除
- angular - 当我在角度应用程序中从一页导航到另一页时,我面临以下错误
- python - 在执行过程时抓取多个网页
- asp.net - F5 负载均衡器持久性配置文件如何确定超时设置值
- .htaccess - 从所有带有 index.php 的页面重定向到非 index.php
- c# - Web 应用程序和 API AzureAD 身份验证流程 ASP.NET Core
- angular - 如何在单击删除按钮时显示警报确认
- python - 在 Excel 行中查找异常值