使用xUnit.net和ReSharper测试运行程序抽象测试类
使用xUnit.net和ReSharper测试运行程序抽象测试类
我想通过创建一个抽象的测试类来对一个抽象类进行单元测试,该抽象测试类使用抽象工厂方法(使用这种方法)来多态地获取具体的实例。代码如下:
public abstract class Base { public bool MyMethod() { return true; } } public class Derived : Base {} // Tests public abstract class BaseTest { [Fact] public void MyMethod_MakeTestFailByAssertingFalseReturn() { //Arrange var instance = GetConcreteInstance(); //Act bool result = instance.MyMethod(); //Assert Assert.False(result); } protected abstract Base GetConcreteInstance(); } public class DerivedTest : BaseTest { protected override Base GetConcreteInstance() { return new Derived(); } }
到目前为止,一切都很好。但是 ReSharper 测试运行器报告了以下错误:
Inconclusive: Test wasn't run
对于 BaseTest 类中的所有测试,甚至包括被忽略的测试。我尝试使用 Visual Studio 测试运行器运行这些测试,但是它无法检测到任何测试。
在使用xUnit.net和ReSharper测试运行器时,有时会遇到"测试方法不明确:测试未运行"的错误。此外,还可能出现文本资源管理器无法找到测试的问题。解决这些问题的方法是删除一个临时的VisualStudioTestExplorerExtensions目录。
问题的原因和解决方法如下:
原因:
- 某些情况下,xUnit.net和ReSharper测试运行器无法正确识别和运行测试方法,导致测试不明确。
解决方法:
1. 打开资源管理器。
2. 导航到路径"C:/users/USERNAME/AppData/Local/Temp/"。
3. 在该目录下找到VisualStudioTestExplorerExtensions文件夹。
4. 删除VisualStudioTestExplorerExtensions文件夹。
5. 重新运行测试,问题应该得到解决。
以上是解决xUnit.net和ReSharper测试运行器中"测试方法不明确:测试未运行"错误的方法。如果还遇到文本资源管理器无法找到测试的问题,可以尝试按照上述方法删除VisualStudioTestExplorerExtensions文件夹来解决。