ios - 如何使用 Xamarin 和 F# 在 iOS 上进行单元测试

标签 ios testing f# xamarin

我正在使用 Xamarin Studio 5.5,我想在 iOS 模拟器上运行我的测试。 遗憾的是,没有用于创建 iOS 单元测试项目的模板。

最佳答案

  1. 创建一个空的 F# 项目
  2. 将以下文件 (AppDelegate.fs) 复制到您新创建的项目中

    namespace ioslibrarytests //obviously you can choose any namespace you want
    
    open System
    open MonoTouch.UIKit
    open MonoTouch.Foundation
    open MonoTouch.NUnit.UI
    
    [<Register("AppDelegate")>]
    type AppDelegate() = 
        inherit UIApplicationDelegate()
        override val Window = null with get, set
        override this.FinishedLaunching(app, options) = 
            this.Window <- new UIWindow(UIScreen.MainScreen.Bounds)
            let runner = new TouchRunner(this.Window)
            runner.Add (System.Reflection.Assembly.GetExecutingAssembly ());
            this.Window.RootViewController <- new UINavigationController (runner.GetViewController ());
            this.Window.MakeKeyAndVisible()
            true
    
    module Main = 
    [<EntryPoint>]
    let main args = 
        UIApplication.Main(args, null, "AppDelegate")
        0
    
  3. 创建您的测试文件。例如 Tests.fs 并遵循此实现模式

    namespace ioslibrarytests
    
    open System
    open NUnit.Framework;
    
    [<TestFixture>]
    type Tests() =
         [<Test>]
         member me.Pass() = Assert.True (true)
    
         [<Test>]
         member me.Fail() = Assert.False (true)
    
         [<Test>]
         [<Ignore ("another time")>]
         member me.``Ignore me``() = Assert.True (false)
    

请注意

  • 您的测试类需要有一个默认构造函数 => type Tests() = ...
  • 您的测试方法需要有一个空参数列表 => member me.Pass() = ...

关于ios - 如何使用 Xamarin 和 F# 在 iOS 上进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27901534/

相关文章:

ios - 如何访问玩我的 iOS 应用程序的 Facebook 好友的高分?

javascript - 如何等待ng-repeat的所有元素显示出来

user-interface - Windows 的 UI 自动化工具(嵌入在 Windows 应用程序中的网页)

python - Locust 结果的推断

f# - F# 的 async 究竟是如何工作的?

c# - F#:尝试支持在 F# 和 C# 习惯用法的构造函数中传递函数

ios - reloadData后翻转回tableView时出现非法约束错误

ios - 在 [superview drawRect :]? 内调用 [subview setNeedsDisplay] 是否安全

ios - 无法从 iPad Air 作为 iBeacon 传输

F# 类型提供程序 - "only return generated types"