我有一个课程如下.
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")也不好.有人能指出我更好的解决方案吗?谢谢.
我有一个2个插槽的应用程序。我已将连接字符串存储在密钥库中。我已在该应用程序和2个插槽上启用了MSI。另外,在保管库的访问策略中,我添加了该应用程序(生产插槽)。但是,我无法将插槽添加到访问策略。例如,我的应用程序名称为XYZ20180706,插槽为XYZ20180706 / dev和XYZ20180706 / test。但是当我在服务主体中键入XYZ20180706 / dev或XYZ20180706-dev时,找不到。
如何为部署槽创建访问策略?
仅在主插槽上启用它是不够的。如果我将应用程序部署到开发版插槽并运行它,则当前无法访问(对Vault)。
谢谢。
azure azure-deployment azure-deployment-slots azure-keyvault
我在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.
谢谢.
我想在默认的“ 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) 我正在学习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()是正常的,因为它调用目标方法两次(按顺序),但并行方法似乎也顺序执行.我希望它能并行执行.
我错过了什么
我试图解析以下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)