gpt4 book ai didi

ios - 如何在 ios XCTestCase 中对两个对象不相等进行单元测试

转载 作者:行者123 更新时间:2023-11-29 03:21:47 24 4
gpt4 key购买 nike

我对单元测试相当陌生,尤其是在 iOS 方面

我有一个测试用例,如果我看到两个对象不相等,它应该会成功

除了请求测试在检查它们是否相等时失败之外,我找不到能给我的方法。

我不希望对不相等的对象进行测试失败,

如果对象不相等,我希望测试成功。

哪种方法可以做到这一点?

这是我的测试方法:

-(void)testServerProtocolSetting{

ServerProtocol *server = [ServerProtocol sharedInstance];

id stub = [OCMockObject mockForClass:[ServerProtocol class]];

ServerProtocol *server1 = server;

[[stub expect]isNULL];

[ServerProtocol setSharedInstance:stub];

[stub verify];

server = [ServerProtocol sharedInstance];

XCTAssertEqualObjects(server1, server, @"server and server1 are not equal");

最佳答案

XCTest 宏通常支持真条件,而不是假条件。所以虽然你可以说

XCTAssertEqualObjects(server1, server);

测试是否相等,以及

XCTAssertEqual(server1, server);

要检验同一性,要颠倒它们并不容易。您必须求助于 XCTAssertTrue/False,这不是很好,因为它只是告诉您断言失败,但不会告诉您这些值,除非您在消息中明确包含它们:

XCTAssertFalse([server1 isEqual:server], @"Oops, both objects equal %@", server);

这是更具表现力的匹配器派上用场的地方,可以在 OCHamcrest、Kiwi、Expecta 和 Cedar 等框架中找到。例如,在 OCHamcrest 中,匹配器可以由其他匹配器组成,因此您可以将 isNot(...) 包裹在任何匹配器周围。要测试 server1 和 server2 相等,它是

assertThat(server, isNot(equalTo(server1))));

同样,要测试 server1 和 server2 相同,它是

assertThat(server, isNot(sameInstance(server1))));

关于ios - 如何在 ios XCTestCase 中对两个对象不相等进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000189/

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