首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSTest中的GetEntryAssembly

VSTest中的GetEntryAssembly
EN

Stack Overflow用户
提问于 2018-10-08 18:16:39
回答 1查看 61关注 0票数 0

在.NET核心中,在简单的.NET核心API中执行Assembly.GetEntryAssembly和在使用VSTest运行测试时执行它是有区别的。

以下是我的包:

代码语言:javascript
复制
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.1.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />

下面是我是如何对API URL运行测试的:

代码语言:javascript
复制
    [TestMethod]
    public async Task SomeTest()
    {
        var builder = new WebHostBuilder().UseStartup<Startup>();
        var testServer = new TestServer(builder);

        var client = testServer.CreateClient();
        var response = await client.GetAsync("someUrl");
        var content = await response.Content.ReadAsStringAsync();
    }

当在一个简单的API中调用Assembly.GetEntryAssembly时,它返回.NET程序集。当在上面编写的测试中调用Assembly.GetEntryAssembly时,它会返回测试包。

我不确定这是否是故意的,但我需要一种方法让它们返回相同的东西: API程序集。我使用Assembly.GetEntryAssembly来迭代API中的所有控制器。我不能通过参数传递程序集。替代方案也是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2018-10-08 19:39:48

您所描述的行为正是Assembly.GetEntryAssembly()应该做的:参见Assembly.GetEntryAssembly Method

改为使用Assembly.GetExecutingAssembly():请参阅Assembly.GetExecutingAssembly Method

或者,您可以通过包含在该程序集中的类型获取您的API程序集

代码语言:javascript
复制
typeof(MyNamespace.MyClass).Assembly

在我看来,参见Type.Assembly PropertyType.Assembly是更具表现力的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52700079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档