已编译DLL中的测试方法和测试类

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

在Visual Studio(任何版本)中都可以使用已编译的Dll的测试吗?

我有一个测试班:

[TestClass]
Public Class TestingClass
{
    [TestMethod]
    public void TestingMethod()
    {}
}

是否有一种方法可以将保存此类的类的库编译为Dll,并在其他测试项目中引用该DLL,以便它们显示在Tests视图中?

我已经尝试过简单地编译库并在另一个项目中引用它以及它,并且测试未在“测试”视图中显示。

c# testing dll
2个回答
1
投票

我怀疑是否有内置的方法可以执行此操作,因为这不是正常的用例,实际上,我发现很难想象这是正确的选择。

normal的测试方法是创建一个代码项目,然后创建一个对代码项目有引用的测试项目。一般来说,这是有道理的,测试需要知道如何实例化并调出他们正在测试的代码。在您描述的场景中,将针对哪些测试进行测试?

也许您正在做一些不同的事情,例如加载要通过反射进行测试的dll,或者您通过某种方式(例如通过服务调用)与它断开连接,但是在任何一种情况下,它仍然感觉可能存在比发布测试dll更好的方法。

从用户的角度来看,我无法想到像进行一堆测试一样令人沮丧,因为我看不到这些内容并被告知确保它们与我的代码兼容。尽管我敢肯定您已经花了很多功夫来命名测试,但要确保每个测试仅测试一项显而易见的事情,并确保所有测试失败都能提供有意义的反馈,但我不禁会觉得最终结果将是人们花费大量时间尝试修复测试,因为他们误解了测试的要求,如果他们能够实际读取测试代码,则可以避免这种情况。

撇开怀疑论,如果您确实确实需要这样做,那么一种方法是给他们一个项目+一个编译的程序集。编译后的程序集中有您的真实测试,而源项目中仅包含使用继承包装测试项目的类。因此,public class TestWrapper : SuperSecretTests。测试引擎将从基类中提取测试,而无需提供基类代码。

您也可能只要求这些测试通过命令行运行,而不是在Visual Studio中运行。两者mstest and vstest.console都允许您指定一个包含要运行的测试的dll。


1
投票

此问题已通过EnableBaseClassTestMethodsFromOtherAssemblies中的参数RunSettings进行了解析,现在默认情况下已启用。

https://github.com/microsoft/testfx/issues/23

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