gpt4 book ai didi

ios - objective-c -具有多个测试输入的单元测试最佳实践

转载 作者:行者123 更新时间:2023-12-01 16:02:09 31 4
gpt4 key购买 nike

我正在为现有项目编写单元测试代码。该项目位于Objective-C中,我必须使用一些测试用例的输入来测试一些功能。例如,我有一个测试用例来测试功能计算器,其中输入了两个参数。当前,我创建数组来存储输入值集以运行测试。使用的代码如下:

- (void)setUp {
[super setUp];
self.vcToTest = [[BodyMassIndexVC alloc] init];
input1 = [[NSMutableArray alloc] initWithObjects:@"193", @"192", @"192", @"165", @"155", @"154", nil];
input2 = [[NSMutableArray alloc] initWithObjects:@"37", @"37", @"36", @"80",@"120", @"120", nil];
}



- (void)testCalculatorSuccess {
for (int i=0; i<input1.count; i++) {
NSArray *expectedResult = [[NSArray alloc] initWithObjects: @"9.93", @"10.04", @"9.77", @"29.38", @"49.95", @"50.60", nil];
NSString *actualResult = [self.vcToTest calculateResult:input1[i] andInput2:input2[i]];
XCTAssertEqualObjects(actualResult, expectedResult[i]);
}

}

我在网上搜索了最佳做法,但找不到任何最佳做法。有人可以帮我弄这个吗?我是否以正确的方式运行测试?在这种情况下应遵循的最佳实践是什么?我应该为每组输入创建一个测试用例吗?

最佳答案

以我的经验,关键的考虑因素应该是随着时间的推移维护测试套件会变得多么容易。您当前的方法将通过两种方式在将来引起问题:

  • 如果要为BMI计算使用不同的数字,则需要使用其他测试类(因​​为您将锁定设置方法中的值)。
  • 如果您决定使用其他数学或多个BMI方程,则必须在检查这些值的任何位置更新数组。

  • 我建议创建一个CSV或纯文本文件,其中包含高度,重量和预期的BMI值。这样可以将测试数据保持在一起。然后,在测试方法中,加载文件,并根据预期的BMI检查实际的BMI。

    您可以在此处灵活地混合和匹配测试数据,或对不同的BMI方程使用不同的测试文件。就个人而言,我也喜欢这样一个事实,即您可以在更改时保留旧的数据文件,以防您想回滚或添加旧式算法支持。

    快速而肮脏的版本如下所示:
    - (NSArray *)dataFromFileNamed:(NSString *)filename {
    NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:filename ofType:nil];
    // load the data however its formatted
    // return the data as an array
    return loadedData;
    }

    - (void)testBMIFormulaInCmAndKgSuccess {
    NSArray *testData = [self dataFromFileNamed:@"BMI_data_01.txt"];
    for (int i=0; i < testData.count; i++) {
    NSArray *dataSet = testData[i];
    CGFloat height = dataSet[0];
    CGFloat weight = dataSet[1];
    CGFloat expectedBMI = dataSet[2];
    NSString *actualResult = [self.vcToTest calculateBMIforHeight:height andWeight:weight];
    XCTAssertEqual(actualResult, expectedBMI);
    }
    }

    关于ios - objective-c -具有多个测试输入的单元测试最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50927652/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com