当使用两种不同的数字类型调用AreEqual(T,T)时,我在我认为不应该使用的情况下向我报告了相等性。在用于AreEqual(T,T)的MSTest文档(https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.testtools.unittesting.assert?view=mstest-net-1.2.0)中,它说42L不等于42。当我运行下面的代码以及双精度和整数时,将报告它们。彼此平等。我假设正在某个地方进行投射,但实际上是在幕后发生了什么?为什么文档中说对于不同的数字类型它们不应该返回相等,为什么说42L和42相等?
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
long expected = 42L;
int actual = 42;
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void Test_Divide()
{
int expected = 5;
double actual = 5;
Assert.AreEqual(expected, actual);
}
}