在MonoDevelop 2.4中使用NUnit测试Monotouch应用程序

在MonoDevelop 2.4中使用NUnit测试Monotouch应用程序,nunit,xamarin.ios,monodevelop,Nunit,Xamarin.ios,Monodevelop,我对Monotouch和Monodevelop都是新手。尝试开始使用NUnit时,我遇到了很多麻烦——我在网上找到的粗略参考资料似乎都与我在UI中看到的不匹配(Mac OS 10.6上的MonoDevelop 2.4)。我试过: 将“NUnit程序集测试集合”项目添加到我的解决方案中 将“空的MonoTouch项目”项目添加到我的解决方案中,然后将NUnit程序集添加到其中,并将我的主项目添加为引用 将C#“空项目”添加到我的解决方案中,并添加NUnit、MonoTouch和我自己的项目作为引用

我对Monotouch和Monodevelop都是新手。尝试开始使用NUnit时,我遇到了很多麻烦——我在网上找到的粗略参考资料似乎都与我在UI中看到的不匹配(Mac OS 10.6上的MonoDevelop 2.4)。我试过:

  • 将“NUnit程序集测试集合”项目添加到我的解决方案中
  • 将“空的MonoTouch项目”项目添加到我的解决方案中,然后将NUnit程序集添加到其中,并将我的主项目添加为引用
  • 将C#“空项目”添加到我的解决方案中,并添加NUnit、MonoTouch和我自己的项目作为引用。这会产生生成错误,抱怨“'[test project name].exe'不包含适合入口点的静态“Main”方法。”
  • (1) 生成一种奇怪的项目,我只能向其中添加程序集——没有引用,当然也没有测试

    (2) 和(3)表现几乎相同:

    • 首先,一个构建错误抱怨没有静态的“Main”方法。我可以通过在Build->generalproject选项中将编译目标更改为“Library”来解决这个问题
    • 接下来,当我尝试运行测试时(从“单元测试”选项卡),它表示正在使用“调试| iPhoneSimulator”配置运行测试
    • “测试结果”面板显示此“正在运行测试”消息,而不会显示任何其他输出
    • 计数保持在“测试:0失败:0忽略:0”
    显然我做错了什么,但我该怎么办

    只是为了笑,这是我的测试

    using System;
    using NUnit.Framework;
    namespace mynamespace
    { 
        [TestFixture]
        public class NavItemTest
        {
            [Test]
            public void TestAll()
            {
               Assert.AreEqual(4, NavItem.all().Count);
            }
        }
    }
    

    我已经写了一些细节,介绍了我们目前发现的最佳实践。你可以在这里找到它:。我很乐意听到其他的方法

    简短答复:

  • 将NUnit项目添加到普通解决方案
  • 添加MonoTouch部件作为参照
  • 编写测试,避免测试任何使用monotouch.dll(设计模式来抽象这些东西)的东西

  • 如果您错过了它,现在有一个NUnitLite runner可用于MonoTouch,它设计用于处理UI无关代码,并在设备(或模拟器)上执行


    请参阅:

    我也有同样的问题:

    这会产生生成错误,抱怨“'[test project name].exe'不包含适合入口点的静态“Main”方法。”


    通过进入Project->[项目名称]选项->构建常规来修复。已将编译目标更改为库。我还没有创建一个主方法类,但以后可能会创建;那我就换回去。

    好了,测试神秘地开始运行了。但这里的最佳实践是什么?“组装测试集合”项目类型是什么?这也是我结束的地方。写得好。