Проблема может быть воспроизведена с помощью следующего примера кода с установленным NUnit 3.
[TestFixture]
public class SByteFixture
{
[Test]
public void Test()
{
var data = new byte[] { 0xFF };
sbyte x = -128;
data[0] = (byte) x;
byte b1 = data[0];
var b2 = (sbyte) b1;
Assert.AreEqual(b1.ToString(), "128");
Assert.AreEqual(b2.ToString(), "-128");
}
}
- Проект должен представлять собой библиотеку классов потому что в консольном приложении оно не воспроизводится.
Должна быть включена оптимизация, т. е. в файле csproj включена следующая настройка:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Optimize>true</Optimize>
</PropertyGroup>
Тест проходит , когда Оптимизация - ложь , но не проходит , когда Оптимизация верна (b2.ToString()
дает "128"
).
Это можно увидеть, используя ReSharper для запуска теста или NUnitConsole , не воспроизводимые с VS Test Explorer .
Как это можно объяснить?