【问题标题】:Class library with Parse throws error带有 Parse 的类库抛出错误
【发布时间】:2014-05-08 21:41:05
【问题描述】:

我正在尝试开发一个包含 Parse.com 的类库。

我创建了一个空的、干净的类库,然后使用 Nuget,添加了 Newtonsoft.Json、Parse 和 Parse.NetFx45

然后我添加了一个取自 Parse.com 网站的简单“Hello World”函数,并在类库中创建了一个函数。

这是我的功能:

public async static void testParse()
{
    ParseClient.Initialize("MyApplicatonID", "My.NetKey");

    var testObject = new ParseObject("TestObject");
    testObject["foo"] = "bar";
    await testObject.SaveAsync();
}

然后我添加了一个单元测试项目,引用了我的类库并编写了如下测试:

[TestMethod]
public void TestParse()
{
    Experior.ParseFunctions.testParse();
}

当我运行测试时,它会在ParseClient.Initialize 行中引发以下错误:

System.TypeInitializationException 未处理 消息:未处理 'System.TypeInitializationException' 类型的异常发生在 mscorlib.dll 附加信息:类型初始值设定项 'Parse.ParseClient' 抛出异常。

我对我读到的一个线程进行了一些搜索,表明 Parse 不喜欢被包装在类库中......

所以,我想,我将在 Windows 窗体项目中测试相同的代码,并通过一个简单的按钮调用代码。

而且效果很好!

谁能看到我做错了什么或提出问题可能是什么?

任何提示/提示将不胜感激!

【问题讨论】:

  • 代码的哪一行抛出异常?
  • @Tarec "当我运行测试时,它会在 ParseClient.Initialize 处引发以下错误"
  • 删除异步并检查行为(如果存在,您需要调用Save 而不是SaveAsync,或者手动等待完成)。例如,nUnit 能够创建异步测试以正确执行异步方法,此外,无论如何您都需要等待 testParse。或者将您的测试签名更改为public async void TestParse(),不要忘记等待。

标签: c# parse-platform class-library typeinitializeexception


【解决方案1】:

感谢@Samuel,我已将代码修改如下:

using Parse;
using System.Threading.Tasks;

namespace ExperiorWrapper
{
public class ParseFunctions
{
    public static async Task testParse()
    {
        ParseClient.Initialize("xxxx", "xxxx");

        var testObject = new ParseObject("TestObject");
        testObject["foo"] = "bar";
        await testObject.SaveAsync();
    }
}
}

现在测试看起来像这样:

[TestMethod]
    public async Task TestParse()
    {
        await ParseFunctions.testParse();
    }

我遇到的另一件重要事情是 Newtonsoft.Json、Parse 和 Parse.NetFx45 必须作为对 Test 项目的引用添加以使其工作...

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2022-12-03
    • 2023-02-03
    相关资源
    最近更新 更多