小编Red*_*zon的帖子

使方法"内部"去除依赖性(用于单元测试) - 一个好的做法?有更好的方法吗?

我有一个课程如下.

public class MyClass  
{  
    public MyMethod()  
    {  
      int x = CalculateSomething();  
    }

   private int CalculateSomething()  
   {  
      // Do something and return an int    
      return 100;  
   }  
}  
Run Code Online (Sandbox Code Playgroud)

为了进行单元测试,我添加[assembly: InternalsVisibleTo("MyTests")]了私有方法并将其更改为内部虚拟方法.在单元测试项目中,我创建了一个类MockMyClass并创建了如下的私有方法.

public class MockMyClass : MyClass  
{  
   public bool MadeHappyNoise {get; set;}
   internal override int CalculateSomething()  
   {  
      MadeHappyNoise = true;  
      return base.CalculateSomething();  
   }  
}
Run Code Online (Sandbox Code Playgroud)

单元测试现在如下

[TestMethod()]
public void WasCalculateSomethingCalledOK()  
{  
   MockMyClass mk = new MockMyClass();
   mk.MyMethod();  
   Assert.IsTrue(mk.MadeHappyNoise, "Oops...CalculateSomething not called...");  
}  
Run Code Online (Sandbox Code Playgroud)

几个问题:这是删除依赖关系的好方法吗?我个人不喜欢将方法从私有更改为内部但没有选项(除了使用Reflection之外).此外,驻留在生产代码中的属性InternalsVisibleTo("MyTests")也不好.有人能指出我更好的解决方案吗?谢谢.

c# unit-testing

5
推荐指数
1
解决办法
531
查看次数

Azure密钥保管库-为部署槽添加访问策略

我有一个2个插槽的应用程序。我已将连接字符串存储在密钥库中。我已在该应用程序和2个插槽上启用了MSI。另外,在保管库的访问策略中,我添加了该应用程序(生产插槽)。但是,我无法将插槽添加到访问策略。例如,我的应用程序名称为XYZ20180706,插槽为XYZ20180706 / dev和XYZ20180706 / test。但是当我在服务主体中键入XYZ20180706 / dev或XYZ20180706-dev时,找不到。

如何为部署槽创建访问策略?

仅在主插槽上启用它是不够的。如果我将应用程序部署到开发版插槽并运行它,则当前无法访问(对Vault)。

谢谢。

azure azure-deployment azure-deployment-slots azure-keyvault

5
推荐指数
2
解决办法
823
查看次数

在"没有服务器响应"错误的构建服务器上,Selenium测试失败

我在VS2010测试项目中进行了简单的Selenium测试,如下所示.

[TestMethod]  
public void MyTestInIE8()  
{  
    IWebDriver driver = new InternetExplorerDriver();  
    try  
    {  
       driver.Navigate().GoToUrl("http://localhost/MyMVC/ABC/DoStuff");
       driver.FindElement((By.Id("Name"))).SendKeys("John");  
       //... run rest of the test  
    }  
    finally  
    {  
       driver.Quit();  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

这在本地服务器上运行良好.但是在构建服务器上它失败并显示以下消息....抛出异常:OpenQA.Selenium.WebDriverException:服务器没有响应url http:// localhost:4444/session/5e5e9b7a-e05c-40d8-9a20-9cab138b2b87.

问题似乎是在finally子句中调用Quit()方法.我试图传入一个已知的端口号,即InternetExplorerDriver(8080),但它没有任何区别.Firefox驱动程序在本地和构建服务器上运行良好.我发现有人报告了类似问题,但没有找到可行的解决方案.http://groups.google.com/group/webdriver/msg/4347971da4d96e97

这是我的配置.Windows 7专业版SP1,64位.
Webdriver - selenium-dotnet-2.0b2.
IE8.

我的构建服务器是带有IE8的Windows Server2008 R2 Standard.
谢谢.

selenium internet-explorer webdriver

4
推荐指数
1
解决办法
7256
查看次数

如何将停用词添加到 ElasticSearch 的默认列表中

我想在默认的“ english ”中添加更多单词,例如“inc”、“incorporated”、“ltd”和“limited”。我怎样才能做到这一点?

我当前创建索引的代码如下。谢谢。

PUT /my_index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_stop": {
          "type": "stop",
          "stopwords": "_english_"
        }
      },
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "whitespace",
           "char_filter": [
            "html_strip"
          ],
          "filter": [ 
            "lowercase",
            "asciifolding",
            "my_stop"
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的测试代码

POST my_index/_analyze
{
  "analyzer": "my_analyzer",
  "text": "House of Dickson<br> corp"
}
Run Code Online (Sandbox Code Playgroud)

elasticsearch

4
推荐指数
2
解决办法
2562
查看次数

并行活动似乎按顺序执行

我正在学习WF4并被困在以下地方.请帮忙.谢谢.

1)我在名为Worker的静态类中创建了一个静态方法MyMethod.在这个方法中,我调用Thread.Sleep(3000),然后打印调用"MyMethod".
2)然后我创建了一个活动DoWork(DoWork.xaml),它包含一个InvokeMethod(目标类型是步骤1中的Worker类,MethodName = MyMethod).
3)在main方法中,我调用了两个名为OutputSequence()和OutputParallel()的方法,如下所示

private static void OutputSequence()            
{        
    Sequence s = new Sequence() { Activities = new DoWork(), new DoWork() } };    
    WorkflowInvoker.Invoke(s);    
}

private static void OutputParallel()            
{        
    Parallel p = new Parallel() { Branches = new DoWork(), new DoWork() } };    
    WorkflowInvoker.Invoke(p);    
}    
Run Code Online (Sandbox Code Playgroud)

OutputSequence()是正常的,因为它调用目标方法两次(按顺序),但并行方法似乎也顺序执行.我希望它能并行执行.
我错过了什么

workflow-foundation-4

2
推荐指数
1
解决办法
1749
查看次数

Java - 使用DOM解析xml

我试图解析以下xml.我可以轻松访问WeekNumber但无法访问EmployeeRatesLevelA和EmployeeRatesLevelB的子项.目标是将这些保存到具有字段WeekNumber和ArrayLists,EmployeeRatesLevelA和EmployeeRatesLevelB的类DataSet.谢谢.

<DataSet ActiveFrom="2011/04/06">  
    <WeekNumber>8</WeekNumber>  
    <EmployeeRatesLevelA>  
        <Rate>0</Rate>  
        <Rate>0.12</Rate>  
    </EmployeeRatesLevelA>  
    <EmployeeRatesLevelB>  
        <Rate>0.15</Rate>  
        <Rate>0.20</Rate>  
    </EmployeeRatesLevelB>  
</DataSet>  


    Document doc = loadXml("data.xml");  
    NodeList nodeList = doc.getElementsByTagName("DataSet");  
    for (int i = 0; i < nodeList.getLength(); i++) {  
        Node node = nodeList.item(i);  
        if (node.getNodeType() == Node.ELEMENT_NODE) {  
            Element element = (Element) node;  
            NodeList weekNumberList = element.getElementsByTagName("WeekNumber");  
            Element weekElement = (Element) weekNumberList.item(0);  
            NodeList textElementList = weekElement.getChildNodes();
            System.out.println("Weeknumber:"+ ((Node)textElementList.item(0)).getNodeValue().trim());
    }

    public static Document loadXml(String file) {
        try {
           return (DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(file)));
        } catch (SAXException e) {
        e.printStackTrace();
        } catch …
Run Code Online (Sandbox Code Playgroud)

java xml dom

0
推荐指数
1
解决办法
6768
查看次数