gpt4 book ai didi

ios - XCTAssert NSSet 计数

转载 作者:行者123 更新时间:2023-11-28 22:15:49 27 4
gpt4 key购买 nike

我正在尝试使用 XCTAssert 编写单元测试。我有一个 NSSet,我想测试这个集合是否包含任何对象。

我检查:

XCTAssertTrue((mySet.count == 0), @"mySet should not be empty");

测试总是通过。在我的测试用例中,NSSet 是空的。当我插入一个 if 语句并询问 if (mySet.count == 0) 时,它是真的 - 所以它们不是 NSSet 中的元素。

为什么断言没有中断?或者:如何使用 XCTAssert 检查 NSSet 或 NSArray 是否为空?

最佳答案

函数的格式是

XCTAssertTrue( <some condition>, @"Some string that gets printed to the console if the test fails" )

如果某些条件 的计算结果为真,则测试通过,如果为假,则测试失败。示例:

// create empty set
NSSet *mySet = [[NSSet alloc] init];
// this test passes because the set is empty
XCTAssertTrue( [mySet count] == 0, @"Set should be empty" );

// Set with three items
NSSet *setTwo = [[NSSet alloc] initWithArray:@[ @"1", @"2", @"3" ]];
// passes test because there are three items
XCTAssertTrue( [setTwo count] == 3, @"We should have three items" );
// failing test
XCTAssertTrue( [setTwo count] == 0, @"This gets printed to the console" );

回到你的问题:

I want to let the test fail when the NSSet is empty. So the NSSet should always hold data. When count is 0 --> break with an error.

你想测试一些项目已经添加到mySet。有两个测试可以使用:

XCTAssertTrue( [mySet count] > 0, @"Should have at least one item" );
// or
XCTAssertFalse( [mySet count] == 0, @"mySet count is actually %d", [mySet count] );

还有:

In my testcase the NSSet is empty. When i insert a if-statement and ask for if (mySet.count == 0) it is true - so they are no elements in the NSSet

如果您的集合为空,XCTAssertTrue( mySet.count == 0, @"") 通过,因为 mySet 中没有项目。

关于ios - XCTAssert NSSet 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21711770/

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