小编Nik*_*ita的帖子

如何在 Google Test (gtest) 中使用夹具成员值运行参数化测试?

我想要实现的是参数化测试 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)

c++ unit-testing xunit googletest

9
推荐指数
1
解决办法
1万
查看次数

如何在函数调用之后初始化变量,就像new-expression提供的那样?

目前我正在研究自定义内存分配,其中一个缺点是我必须编写多行来实现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为每个班级重写.

c++ visual-c++ c++14 c++17

6
推荐指数
1
解决办法
341
查看次数

在Intellij IDEA中禁用Lambda表达式/匿名类的缩进

下图几乎说明了整个问题: 当按ENTER时,IntelliJ IDEA相对于lambda表达式缩进右括号,而应相对于父表达式的右括号缩进。

我尝试使用// formatter:off适当的设置,但无济于事。我也尝试过为lambda表达式/匿名类寻找缩进规则,但找不到这些规则。

任何建议,不胜感激!

intellij-idea intellij-14

5
推荐指数
2
解决办法
1173
查看次数

IIS URL重写 如何删除目录和扩展名?

我已经在以下方面苦苦挣扎了:

默认网址:

examplesite.com/folder/about.cshtml
Run Code Online (Sandbox Code Playgroud)

所需网址:

examplesite.com/about
Run Code Online (Sandbox Code Playgroud)

基本上,我想完成两件事:

  • 1使用实际紧凑的代码删除文件扩展名。
  • 2删除包含“关于”页面的文件夹。

我发现了实现上述所有目标的一些不常见的规则,但是其中大多数包含许多冗余代码,当我使用IIS 8.0测试该代码时,它们会使我的网站崩溃。

所以我希望有人可以分享一个紧凑且适合我需求的规则。或单独的规则具有相同的结果。

每一个贡献都值得赞赏:)

asp.net iis web-config url-rewriting iis-8

4
推荐指数
1
解决办法
7049
查看次数