做了[TestMethod的]必须公开?是什么后果存在,如果它不是?

问题描述 投票:0回答:2

我使用Microsoft.VisualStudio.TestPlatform.TestFramework提供的测试设备。我有一个测试方法饰[TestMethod的]。我想实现这个测试的使用[的DataRow]参数的各种组合。一个该方法将需要的是声明为在另一个组件内的枚举类型的参数;其中枚举类型定义的组件给出包含经由InternalsVisibleTo单元测试访问其内部组件。

单元测试方法是常规公共公共类中,只要我可以告诉。当涉及到这个单元测试方法,无论是测试方法必须从该单元测试组件的外部不可访问(通过使它私有或内部实现,或通过使包含它的内部测试类)或枚举必须公开。使公共枚举是不合适的,所以它会出现正确使测试方法内部。

在那里做单元测试方法内部可能产生的不利后果?

这个问题无疑是一个简单的,有一个简单的答案。我问,因为我有在所有搜索互联网的答案,但没有成功。所有我能找到的关于人们是否应该测试私有方法与否的讨论。

注意:如果你给不回答我的问题,而是指出或暗示这是错的,测试使用InternalsVisibleTo组件的内部成员的评论或回答的话,我必须拒绝你的答案不可收拾。

注2:在这种情况下做的一种可能的就是用一个字符串参数,而不是枚举参数,在测试方法中使用Enum.Parse,并通过所有相关参数为使用nameof运营商构建的字符串。我不喜欢这样,但也可能是最不坏的解决方法。

c# unit-testing access-modifiers internalsvisibleto
2个回答
2
投票

至少对于MSTest的,在Visual Studio中的测试运行将不会检测不公开运行时的方法。这里有一个快速的样品。

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1() => Assert.IsTrue(true);

    [TestMethod]
    internal void TestMethod2() => Assert.IsTrue(false);
}

结果是一个测试,检测,运行,并顺利通过。所以,我认为,不具有的测试方法公开重大的负面后果。


1
投票

[TestMethod]s必须有public访问。 Here的微软对此事的文档。

其后果是它不会,如果private运行。

© www.soinside.com 2019 - 2024. All rights reserved.