我很想使用 dotnet fiddle(https://dotnetfiddle.net/)通过单元测试演示一些行为
Fiddle 通常构建为控制台应用程序,通过 Program.Main 调用
但测试通常在类库中运行,调用方式如下dotnet test
有没有什么办法可以让测试顺利进行?
示例测试
public class CalculatorTests
{
[Fact]
public void Add_WhenCalledWithTwoIntegers_ReturnsTheirSum()
{
// Arrange
var calculator = new Calculator();
// Act
var result = calculator.Add(2, 3);
// Assert
Assert.Equal(5, result);
}
private class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
}
注意:这个问题的代码部分可能也与 StackOverflow 相关,但我特别想在 dotnetfiddle 的上下文中实现它。代码在本地运行良好
正如 Frank Thomas 在评论中提到的,无法像在本地一样在 .Net Fiddle 中运行单元测试。他还提到,您可以创建自己的运行器来执行测试,作为 .Net Fiddle 提供的控制台应用程序的一部分。但是,您不必从头开始创建这些运行器:两者都
NUnit
提供XUnit
了(相当)轻松地执行此操作的方法。我尝试了这两个框架,但不幸的是只能
NUnit
在 .Net Fiddle 中工作(似乎他们使用了一种反射无法正常工作的方式来运行项目)。该方法在jdoodle
XUnit
中确实有效(也许在其他在线编辑器中也有效,在我找到一个有效的编辑器后我就停止尝试了)。所以您需要做出一个折衷的决定:要么切换到
NUnit
并坚持使用 .Net Fiddle,要么坚持XUnit
并切换到其他在线编辑器......NUnitLite 运行器
Dotnet Fiddle 中的演示
以下代码片段应可在使用该
NUnitLite
包的 .Net Fiddle 上运行。(感谢我的同事 Markus 向我展示此内容)XUnit 运行器
JDoddle 中的演示
解决方案
XUnit
很大程度上受到StackOverflow上的这个问题和XUnit repo中的这个示例的启发(可以在那里找到更多解释)。我在jdoodle上尝试过,没有问题,但请注意,与示例代码相比,我采取了一些捷径。我希望这就是您所寻找的!