c# unit testing run in debug mode but failes on run mode
-
c# unit testing run in debug mode but failes on run mode
שלום,
אני כותבת ב.net 4.5 ב visual studio 2019 על windows, עם msUnitTests
כתבתי טסט לתוכנית שמקבלת הודעה בtcp, עושה איתה פעולות שונות ומחזירה את ההודעה המקורית לשולח.
הטסט שלי שולח הודעה, מקבל את התשובה ובודק שהיא זהה להודעה שנשלחה.
הטסט עובר כשאני מריצה בDebug, אך נכשל כשאני מריצה בRun רגיל – הוא לא מקבל חזרה שום הודעה.
ניסיתי להוסיף Sleep בכמה מקומות (למקרה של race condition) אבל שום דבר לא עזר.
מצרפת את הקוד של הטסט, ניסיתי ליצור דוגמא קטנה של התוכנית שתשחזר את הבאג – אבל לא הצלחתי.
אודה מאוד למישהי שתוכל לעזור לי בזה, אני תקועה עם זה כבר כמה ימים 🙁
לא מצליחה ליישר את השורות באנגלית, אז צירפתי גם תמונה של הקוד, לקריאה נוחה יותר
namespace MyTests{
[TestClass]
public class DataFlowSanityTest{
public DataFlowSanitiyTest()
{
MyProgram.Instance.Init();
MyProgram.Instance.StartCommunication();
}
[TestMethod]
public void SanityTest()
{
// arrange
byte[] expected = Encoding.Default.GetBytes("Sanity Test");
TcpClient client = new TcpClient("127.0.0.1", 4000);
NetworkStream nws = client.GetStream();
nws.ReadTimeout = 5000;
// act
nws.Write(expected, 0, expected.Length);
byte[] actual = new byte[expected.Length];
try
{
int bytesRead = nws.Read(actual, 0, actual.Length);
}
catch (System.IO.IOException)
{
Assert.Fail("Reached timeout {0} ms, no message was recieved from MyProgram", nws.ReadTimeout);
}
//assert
CollectionAssert.AreEqual(expected, actual, string.Format("Msg sent: {0}, Msg recieved: {1}",
Encoding.Default.GetString(expected), Encoding.Default.GetString(actual)));
}
}
}
עוד לא נכתבו תגובות לדיון זה.
Log in to reply.