我试图在我的所有测试之前设计一个测试套件来运行全局初始化.我们可以考虑在不同的类和命名空间中存在测试.在NUnit文档中,我只找到了一个名为OneTimeSetUp的属性,但它仅适用于同一命名空间中的测试.
所以,我设计使用inherting.我的所有测试类都包含一个基本测试类,其中构造函数执行全局的inicialization(在静态变量的帮助下检查它是否已初始化),以及析构函数中的全局拆除.
使用它我可以创建我的场景.但是当测试套件运行时,基本测试类会创建新对象,因为在不同类和名称空间中存在测试.它导致系统中的重叠并且下一个测试运行缓慢:第一个测试在50秒内运行,而另一个(在不同的命名空间中执行相同的操作)在120秒内运行.
有一种更好的方法可以在不影响测试性能的情况下创建全局的官方化和全局拆解
我尝试连接两个null字符串时只看到一个奇怪的结果:它返回一个空字符串!我无法想象它是否具有某些实用程序或为什么会发生这种情况。
例:
string sns = null;
sns = sns + sns;
// It results in a String.Empty
string snss = null;
snss = String.Concat(snss, snss);
// It results in a String.Empty too!
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么它返回a String.Empty而不是null?
我正在努力创建这个脚本来生成好友请求。我需要专门为每个按钮和标签添加一个 id,以便在用户单击接受或拒绝按钮时将其删除。
Button reqAccept;
Button reqReject;
Label reqUserName;
private void loadFriendRequests()
{
using (SqlConnection connection = new SqlConnection(con))
{
using (SqlCommand cmd = new SqlCommand("Select UserFirstName, UserLastName, FriendEmail From PendingRequests Where FriendEmail = @fe", connection))
{
connection.Open();
cmd.Parameters.AddWithValue("@fe", Properties.Settings.Default.Email);
using (SqlDataReader dr = cmd.ExecuteReader())
{
i = 0;
while (dr.Read())
{
i++;
foreach (object request in i.ToString())
{
Label userName = new Label();
Button accept = new Button();
Button reject = new Button();
accept.Click += Accept_Click;
reject.Click += Reject_Click;
userName.Text …Run Code Online (Sandbox Code Playgroud) 我在 html 页面中有一个复选框元素列表,所有元素都可以选择并且具有不同的 ID,并且它的 ID 通过 HTTP POST 发送到我的 API。为了安全起见,我需要检查是否有任何发送的 ID 无效。它只是一种方法,如果我的数据库中不存在这些 ID 中的任何一个,则返回 false,如果所有这些 ID 都存在,则返回 true。
最初看起来很简单,但我没有找到直接使用 EF Core 从我的数据库返回该结果的方法。我总是需要将Count我的查询结果与我的列表进行比较Count。
我更好的方法是:
public async Task<bool> IsIdListValid(IEnumerable<int> idList) =>
(await _context.Foo
.Select(x => x.Id)
.CountAsync(id => idList.Contains(id))
) == idList.Distinct().Count();
Run Code Online (Sandbox Code Playgroud)
所以,我要问的是:有没有更好的方法来编写该查询,更具可读性和性能?