0

Xamarin PCL に、System.Reflection.GetRuntimeProperties を呼び出すクラスがあります。例として、私の PCL クラスに次のメソッドがあるとします。

public string ExampleMethod(string arg) {
    if(arg == null) return null;
    IEnumerable<PropertyInfo> infos = this.GetType().GetRuntimeProperties();
    return infos[0].Name;
}

次に、PCL プロジェクトを参照してこのクラスをテストする Xamarin.UITest プロジェクトがあります。これまでの TestFixture には 2 つのテスト ケースがあり、この例では次のようになります。

    [Test]
    public void TestExampleMethod_ArgNull_Null(){
        Assert.That (exampleInstance.ExampleMethod(null), Is.Null);
    } 

    [Test]
    public void TestExampleMethod_ArgNotNull_NotNull(){
        Assert.That (exampleInstance.ExampleMethod("testValue"), Is.NotNull);
    } 

Xamarin.UITest プロジェクトを実行すると、Android と iOS の両方のプラットフォームでコンパイルされ、テストが実行され、正常に完了します。TestExampleMethod_ArgNull_Null テストは、早期に返されるためパスします。ただし、TestExampleMethod_ArgNotNull_NotNull テストは次のエラーで失敗します。

System.MissingMethodException : メソッド 'RuntimeReflectionExtensions.GetRuntimeProperties' が見つかりません。

したがって、すべてが正常にコンパイルされ、他のテスト ケースを正常に実行できたとしても、Xamarin.UITest プロジェクトは System.Reflection で何も使用できないようです。これをデバッグする方法を知っている人はいますか?

4

2 に答える 2

0

これを Xamarin サポートにも投稿し (@jgoldberger に感謝)、プロジェクトのセットアップの問題が原因であることがわかりました。これは、特定のバージョンの Json.Net (この記事の時点で 6.0.4) を必要とする Couchbase Lite を使用するプロジェクトです。すべてのプロジェクト (PCL、Android、iOS、および UITest) で同じバージョンの Json.Net が使用されていなかったため、一部のプロジェクトで誤ってパッケージを更新したに違いありません。私は最終的にプロジェクトをゼロから作り直しましたが、それでうまくいきました。

于 2015-07-28T15:29:00.517 に答える