是否可以从目标c中的UIViewController类调用XCTest方法

问题描述

我的要求是,当用户单击UIViewController中的按钮并开始使用XCTest进行测试时。

我能够执行直接测试并启动应用程序。

我有2个问题:

  1. 当用户单击按钮时,无法从View开始测试。
  2. 无法执行控制器类中的简单方法。

MySampleAppUITests.m

<pre><code>
#import <XCTest/XCTest.h>
#import "ViewController.h"

@interface MySampleAppUITests : XCTestCase

    @property (nonatomic,strong) XCUIApplication *app;

    @property (nonatomic,strong) UIWindow *window;
    @property (nonatomic,strong) ViewController *viewController;

@end        

@implementation UITestSampleUITests

@synthesize viewController = _viewController,window=_window;
- (void)setUp {
        [super setUp];
           
        self.continueAfterFailure = NO;
        self.app = [[XCUIApplication alloc] init] ;
        [self.app launch];
    
        _window = UIWindow.alloc.init;
        NSBundle *bundle = [NSBundle bundleWithIdentifier:@"com.at.MySampleApp"];
        if (bundle == nil) {
            bundle = [NSBundle bundleForClass:[self class]];
        }
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: bundle];
        _viewController = (ViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
    }

- (void)testSum {
    int result = [_viewController sum:4 and:5]; //caught "NSInvalidArgumentException","-[UIViewController sum:and:]: unrecognized selector sent to instance 0x7fca6a472bb0"
    XCTAssertEqual(result,9);
}
</pre></code>

// --- 我的Viewcontroller.m文件 ---- //


    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"viewDidLoad");
    }
    - (int)sum: (int)a and:(int)b {
        return a+b;
    }

我还想问用户单击按钮时是否可以从View开始测试?因为我正在搜索并尝试了过去两天,但找不到,所以我在这里发布了这个问题。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)