You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/tests/CncCollector.Tests/CollectRecordWriterTests.cs

137 lines
4.8 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using Xunit;
using CncCollector.Core;
using CncModels.Entity;
namespace CncCollector.Tests
{
/// <summary>
/// CollectRecordWriter 单元测试。
/// CollectRecordWriter 使用静态方法 + MySqlConnection
/// 使用无效连接字符串验证容错行为(不抛异常)。
/// </summary>
public class CollectRecordWriterTests
{
/// <summary>无效连接字符串</summary>
private const string InvalidConnStr = "Server=invalid;Database=invalid;User Id=invalid;Password=invalid;";
// ===== WriteBatch 测试 =====
[Fact]
public void WriteBatch__()
{
// WriteBatch 内部所有DB操作都有 try-catch不应向外抛异常
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
null, "", 1, DateTime.Now, 100L, false, "测试错误"));
Assert.Null(ex);
}
[Fact]
public void WriteBatch__()
{
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
new List<CollectRecord>(), "{}", 1, DateTime.Now, 50L, true, null));
Assert.Null(ex);
}
[Fact]
public void WriteBatch__()
{
var records = new List<CollectRecord>
{
new CollectRecord
{
MachineId = 1,
CollectTime = DateTime.Now,
ProgramName = "O0001",
PartCount = 10
}
};
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
records, "{}", 1, DateTime.Now, 200L, true, null));
Assert.Null(ex);
}
[Fact]
public void WriteBatch__()
{
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
null, "原始JSON", 1, DateTime.Now, null, false, "连接超时"));
Assert.Null(ex);
}
[Fact]
public void WriteBatch_null_()
{
// null连接字符串会在 MySqlConnection 构造时失败,但应被 try-catch 捕获
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
null, null,
null, "", 1, DateTime.Now, null, false, "错误"));
Assert.Null(ex);
}
[Fact]
public void WriteBatch_nullJSON_()
{
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
null, null, 1, DateTime.Now, 100L, false, null));
Assert.Null(ex);
}
[Fact]
public void WriteBatch__()
{
var records = new List<CollectRecord>
{
new CollectRecord { MachineId = 1, CollectTime = DateTime.Now, ProgramName = "O0001", PartCount = 5 },
new CollectRecord { MachineId = 2, CollectTime = DateTime.Now, ProgramName = "O0002", PartCount = 10 },
new CollectRecord { MachineId = 3, CollectTime = DateTime.Now, ProgramName = "O0003", PartCount = 15 }
};
var ex = Record.Exception(() => CollectRecordWriter.WriteBatch(
InvalidConnStr, InvalidConnStr,
records, "[]", 1, DateTime.Now, 300L, true, null));
Assert.Null(ex);
}
// ===== RecordFailure 测试 =====
[Fact]
public void RecordFailure__()
{
var ex = Record.Exception(() => CollectRecordWriter.RecordFailure(
InvalidConnStr, 1, "连接超时"));
Assert.Null(ex);
}
[Fact]
public void RecordFailure_null_()
{
var ex = Record.Exception(() => CollectRecordWriter.RecordFailure(
null, 1, "错误"));
Assert.Null(ex);
}
[Fact]
public void RecordFailure_null_()
{
var ex = Record.Exception(() => CollectRecordWriter.RecordFailure(
InvalidConnStr, 1, null));
Assert.Null(ex);
}
[Fact]
public void RecordFailure_ID_()
{
var ex = Record.Exception(() => CollectRecordWriter.RecordFailure(
InvalidConnStr, -1, "地址无效"));
Assert.Null(ex);
}
}
}