在setUp(Xcode)中获取测试方法的名称

时间:2016-04-21 20:02:21

标签: objective-c xcode xctest

我想在日志中附加一条消息,其中包含即将运行的测试方法的名称。我想在我的测试超类中使用setUp方法执行此操作,因此我无处可重复代码。

我想做这样的事情:

- (void) setUp {
    [super setUp];
    [self log:@NSStringFromSelector(_cmd)];
}

但是,_cmd总是将“setUp”作为其字符串,而我想要“test00TestTheThing”

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:5)

我发现了这个:

self.name

然而,这给了我“ - [AppUITests test00TestTheThing]”

答案 1 :(得分:1)

不知道它是否仍然有用,但是是否有人需要它:

您可以使用self.name,然后将获得带有测试名称的类的名称。

要删除类名称并仅保留测试名称,请使用replacingOccurrences函数

示例:

class ClassName: XCTestCase {
    override func setUp() {
      // get the name and remove the class name and what comes before the class name
      var currentTestName = self.name.replacingOccurrences(of: "-[ClassName ", with: "")

      // And then you'll need to remove the closing square bracket at the end of the test name

      currentTestName = currentTestName.replacingOccurrences(of: "]", with: "")
    }