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

时间:2010-10-05 21:52:15

标签: nunit xamarin.ios monodevelop

我是Monotouch和Monodevelop的新手。试图开始使用NUnit并且我遇到了很多麻烦 - 我在网上找到的粗略参考资料似乎与我在UI中看到的一致(Mac OS 10.6上的MonoDevelop 2.4)。我试过了:

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

    (2)和(3)表现得非常相似:

    • 首先,构建错误抱怨没有静态'Main'方法。我可以通过在Build - >中将编译目标更改为“Library”来解决此问题。一般项目选择。
    • 接下来,当我尝试运行测试时(来自Unit Testing选项卡),它表示正在使用“Debug | 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);
            }
        }
    }
    

3 个答案:

答案 0 :(得分:1)

已经写了一些关于到目前为止我们发现的最佳实践的细节。你可以在这里找到它:http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing。很高兴听到其他方法。

简短回答:

  1. 将NUnit项目添加到正常解决方案
  2. 将MonoTouch程序集添加为参考
  3. 编写测试,避免测试使用monotouch.dll的任何东西(设计模式来抽象这些东西)。
  4. 赢!

答案 1 :(得分:1)

如果您错过了它,现在有一个可用于MonoTouch的NUnitLite运行器,它适用于UI不可知代码并在设备(或模拟器)上执行。

请参阅:.NET Unit test runner for iOS

答案 2 :(得分:0)

我遇到了同样的问题:

  

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

通过进入Project修复 - > [项目名称]选项 - >建设一般。将编译目标更改为库。我还没有上过Main-method类,但可能会在以后;所以我会改回来。