我想要实现的是参数化测试 TEST_P(MyFixtureClass, DoStuff),我可以用它测试不同的值。虽然所说的值不应该是常量,就像那些通常传递给INSTANTIATE_TEST_CASE_P. 此外,我想使用其他夹具类中的值 - 理想情况下。
似乎没有任何东西,它涵盖了在创建参数化测试时使用字段而不是静态值。在官方文件似乎没有任何掩盖这一点-可悲的。
但是为了避免在这个问题中引入 XY 问题,这里是等效的伪代码:
参数化的夹具,MyFixture:
struct MyFixture : OtherFixture, ::testing::WithParamInterface<float>
{
float a;
void SetUp() override
{
a = GetParam();
}
};
Run Code Online (Sandbox Code Playgroud)
OtherFixture 看起来像这样:
struct OtherFixture : testing::Test
{
float a;
float b;
float c;
void SetUp() override
{
a = CalculateSomeFloat();
b = CalculateSomeFloat();
c = CalculateSomeFloat();
}
};
Run Code Online (Sandbox Code Playgroud)
测试用例类似于:
// This here is the key aspect.
// Basically, I do not want to write a …Run Code Online (Sandbox Code Playgroud) 目前我正在研究自定义内存分配,其中一个缺点是我必须编写多行来实现new-expression只需一个简单调用所提供的相同结果.
简单初始化:
MyClass *obj = new MyClass(3.14);
Run Code Online (Sandbox Code Playgroud)
初始化不太简单:
void *obj_mem = alloc->Allocate(sizeof MyClass, alignof(MyClass));
MyClass *obj = new(obj_mem) MyClass(3.14);
Run Code Online (Sandbox Code Playgroud)
我将为我的项目组提供像那样的分配器,并希望它们实际使用它们,而不是回到调用new,因为我们需要这些更快的分配器来管理我们的内存.
但为了实现这一点,我将不得不设计最简单的语法来使用我的自定义分配器初始化变量.
我最好的选择是覆盖operator new每个类,因为它是new-expression 的分配函数.
class MyClass
{
...
void* operator new(size_t size, Allocator *alloc)
{
return alloc->Allocate(size, alignof(MyClass));
}
}
Run Code Online (Sandbox Code Playgroud)
然后初始化变量的语法成为我最终想要的:
MyClass *obj = new(alloc) MyClass(3.14);
Run Code Online (Sandbox Code Playgroud)
但是,如果我能得到与上述相同的一般信息,那就太好了.所以我不必operator new为每个班级重写.
下图几乎说明了整个问题:

我尝试使用// formatter:off适当的设置,但无济于事。我也尝试过为lambda表达式/匿名类寻找缩进规则,但找不到这些规则。
任何建议,不胜感激!
我已经在以下方面苦苦挣扎了:
默认网址:
examplesite.com/folder/about.cshtml
Run Code Online (Sandbox Code Playgroud)
所需网址:
examplesite.com/about
Run Code Online (Sandbox Code Playgroud)
基本上,我想完成两件事:
我发现了实现上述所有目标的一些不常见的规则,但是其中大多数包含许多冗余代码,当我使用IIS 8.0测试该代码时,它们会使我的网站崩溃。
所以我希望有人可以分享一个紧凑且适合我需求的规则。或单独的规则具有相同的结果。
每一个贡献都值得赞赏:)
c++ ×2
asp.net ×1
c++14 ×1
c++17 ×1
googletest ×1
iis ×1
iis-8 ×1
intellij-14 ×1
unit-testing ×1
visual-c++ ×1
web-config ×1
xunit ×1