xcode 我可以多次运行XCTest套件吗?

pb3skfrl  于 2023-01-31  发布在  其他
关注(0)|答案(7)|浏览(139)

是否可以让Xcode多次运行单元测试?
我在几个单元测试中遇到了一个问题,导致了间歇性的故障。现在我 * 认为 * 我已经修复了它,我唯一的选择似乎是mash + U,直到我有95%的信心bug消失。
我知道其他的单元测试框架使得多次运行单个测试、测试用例或测试套件变得相当容易。我们在XCTest中有这种奢侈吗?

mftmpeh8

mftmpeh81#

对我来说,它的工作在迅速

override func invokeTest() {
    for time in 0...15 {
        print("this test is being invoked: \(time) times")
        super.invokeTest()
    }
}
mm5n2pyu

mm5n2pyu2#

尝试重写调用测试:https://developer.apple.com/documentation/xctest/xctestcase/1496282-invoketest?language=objc

- (void)invokeTest
{
    for (int i=0; i<100; i++) {
        [super invokeTest];
    }
}
t1rydlwq

t1rydlwq3#

它可能会帮助你

func testMultiple() {
    self.measureBlock() {
            ...
            XCTAssert(errMessage == nil, "no error expected")        
    }
}

这将多次运行self.measureBlock()中的代码,以测量平均时间。
更改代码是一项工作,但无论如何您可能都想知道执行时间。
这个答案可能足够接近你想要的,而且很容易做到。

a64a0gku

a64a0gku4#

另一种方法是通过命令行来完成,你可以使用-only-testing参数运行一个测试,并且避免使用test-without-building进行构建。

for i in {1..10}; \
  do xcodebuild \
    test-without-building \
    -workspace MyApp.xcworkspace \
    -scheme Debug \
    -destination 'platform=iOS Simulator,OS=11.2,name=iPhone 8' \
    -only-testing:MyApp.Tests/TestFile/myTest;
done
taor4pac

taor4pac5#

尝试使用for循环:

func testMultiple() {
    for _ in 0...100 {
            ...
            XCTAssert(errMessage == nil, "no error expected")        
    }
}

注意,这在self.measureBlock()中不起作用。
但是,您可以在measureBlock()中调用此函数:

func testMultiple() {
    for _ in 0...100 {
            ...
            XCTAssert(errMessage == nil, "no error expected")        
    }
}

func testPerformance() {
    self.measureBlock() {
        self.testMultiple()
    }
}

Xcode 8运行measureBlock代码10次。

siotufzp

siotufzp6#

我过去使用invokeTest()覆盖(Xcode 10)非常成功。但是现在在Xcode 11中它不起作用(至少对我来说)。我最终做的是:

func test99Loop() {
    for i in 0..<LOOP_COUNT {
        if i > 0 { tearDown(); sleep(1); setUp() }
        test3NineUrls()
        do { tearDown(); sleep(1) }
        setUp()
        test6NineCombine()

        print("Finished Loop \(i)")
    }
}

我显然使用setup/teardown,这是多次执行这些操作的正确方法(因为第一次和最后一次都是由Xcode调用的)。

7cjasjjr

7cjasjjr7#

现在您可以在Xcode中执行此操作
编辑测试计划。在“测试导航器”的顶部,您应看到“测试计划:MyAppName(默认)"。点击此按钮并选择“编辑测试计划”。
在编辑器中,依次选择“配置”、“配置1
在测试执行下,可设置测试重复模式和最大测试重复次数。
从菜单产品〉测试运行测试

相关问题