夹具级设置/拆卸是否有gtest等效物?

时间:2014-12-05 18:27:09

标签: c++ testing googletest

所以,我知道gtest有“字面上”的固定装置,但构造函数/析构函数和setup /拆解函数将在每次测试后执行 而不是在整个测试集之后执行夹具

我可以想到解决这个问题的方法,但是有一些我没有找到的内置支持吗?

2 个答案:

答案 0 :(得分:5)

您可以在测试夹具类中定义静态方法SetUpTestCaseTearDownTestCase

struct MyTest: ::testing::Test {
    static void SetUpTestCase() {

    }

    static void TearDownTestCase() {

    }
};

有关这方面的更多信息,请参见Googletest wiki

注意这些静态方法名称的拼写。

答案 1 :(得分:0)

Google测试支持在测试(测试方法)级别,套件(类)级别以及程序级别上进行设置和拆卸。后面是您要寻找的那个:

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#global-set-up-and-tear-down介绍了如何派生和注册自己的实现安装和拆卸方法的 environment-fixture 类,这些方法在测试运行程序执行期间仅被调用一次

简而言之,您可以执行以下操作:

class ProductForm(forms.ModelForm):

class Meta:
    model = Product
    exclude = ()

def __init__(self, *args, **kwargs):
    super(ProductForm, self).__init__(*args, **kwargs)
    instance = kwargs['instance']
    self.fields['condition'].widget.attrs['id'] = instance.id