小编Sit*_*nsu的帖子

使用Moq模拟单元测试的异步方法

我正在测试一个进行Web API调用的服务的方法.HttpClient如果我还在本地运行Web服务(位于解决方案中的另一个项目中),则使用正常工作正常进行单元测试.

但是,当我签入我的更改时,构建服务器将无法访问Web服务,因此测试将失败.

我已经为我的单元测试设计了一种方法,通过创建一个IHttpClient接口并实现我在我的应用程序中使用的版本.对于单元测试,我使用模拟的异步post方法创建一个模拟版本.这是我遇到问题的地方.我想HttpStatusResult为这个特定的测试返回一个OK .对于另一个类似的测试,我将返回一个糟糕的结果.

测试将运行但永远不会完成.它挂在等待.我是异步编程,代表和Moq本身的新手,我一直在搜索SO和谷歌一段时间学习新东西,但我似乎仍然无法解决这个问题.

这是我试图测试的方法:

public async Task<bool> QueueNotificationAsync(IHttpClient client, Email email)
{
    // do stuff
    try
    {
        // The test hangs here, never returning
        HttpResponseMessage response = await client.PostAsync(uri, content);

        // more logic here
    }
    // more stuff
}
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试方法:

[TestMethod]
public async Task QueueNotificationAsync_Completes_With_ValidEmail()
{
    Email email = new Email()
    {
        FromAddress = "bob@example.com",
        ToAddress = "bill@example.com",
        CCAddress = "brian@example.com",
        BCCAddress = "ben@example.com",
        Subject = "Hello",
        Body = "Hello …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing asynchronous moq

163
推荐指数
4
解决办法
7万
查看次数

在Java中将double转换为float

我正面临与转换double为相关的问题float.实际上,我将float类型存储23423424666767在数据库中,但是当我们从下面的代码中获取数据库中的数据时getInfoValueNumeric(),它就是double类型.我们获得的价值在于2.3423424666767E13表格.

那么我们如何获得float格式数据23423424666767呢?

2.3423424666767E13 to 23423424666767

public void setInfoValueNumeric(java.lang.Double value) {
    setValue(4, value);
}


@javax.persistence.Column(name = "InfoValueNumeric", precision = 53)
public java.lang.Double getInfoValueNumeric() {
    return (java.lang.Double) getValue(4);
}
Run Code Online (Sandbox Code Playgroud)

java double floating

56
推荐指数
5
解决办法
19万
查看次数

Protobuf-net:尝试读取流的结尾

我们的系统,当使用protobuf-net序列化一条消息时,有时但不是每次都会引发下面暴露的错误.错误的原因是什么?如何缓解错误?

请注意我们DeserializeWithLengthPrefix已经在使用.

更新:相关代码在这里

private const PrefixStyle PrefixStyleInPlace = PrefixStyle.Fixed32;
public static byte[] SerializeObjectToByteArray<TSerializable>(TSerializable source) where TSerializable : class
    {
        byte[] result;
        using (var memoryStream = SerializeObjectToStream(source))
        {
            result = memoryStream.ToArray();
        }
        return result;
    }


    public static TResult DeserializeObject<TResult>(byte[] source)
    {
        TResult result;
        using (var memoryStream = new MemoryStream(source))
        {
            memoryStream.Position = 0;
            result = Serializer.DeserializeWithLengthPrefix<TResult>(memoryStream,PrefixStyleInPlace);
        }

        return result;
    }

    public static MemoryStream SerializeObjectToStream<TSerializable>(TSerializable source) where TSerializable : class
    {
        var memoryStream = new MemoryStream();

        Serializer.SerializeWithLengthPrefix(memoryStream, source,PrefixStyleInPlace);
        memoryStream.Position = …
Run Code Online (Sandbox Code Playgroud)

c# protobuf-net

30
推荐指数
1
解决办法
5037
查看次数

使用Arrays.asList()初始化List的最佳方法是什么

我使用下面的代码.两者都在我的应用程序中工作正常.

情况1.

List<String> coreModules =
    new ArrayList<String>(Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE"));
Run Code Online (Sandbox Code Playgroud)

案例2.

List<String> coreModules =
    Arrays.asList(
        "TOOLBAR_TO_DO_LIST",
        "TOOLBAR_PROPERTY",
        "TOOLBAR_PEOPLE",
        "TOOLBAR_INSURANCE",
        "TOOLBAR_BATCH",
        "TOOLBAR_INFORMATION_REFERENCE",
        "TOOLBAR_LR_PROPERTY",
        "TOOLBAR_CASE_FOLDER",
        "TOOLBAR_INSPECTION_RESULT",
        "TOOLBAR_MY_OFFICE");
Run Code Online (Sandbox Code Playgroud)

但我有一些问题:

  1. 哪一个在性能方面更好?
  2. 在哪种情况下更喜欢案例2?

java arrays collections list arraylist

23
推荐指数
1
解决办法
7万
查看次数

无法导入javax.ejb.*包

我在构建EJB会话bean 时遇到了麻烦.

packages无法找到以下内容:

import javax.ejb.LocalBean;
import javax.ejb.Stateful;
import javax.ejb.TransactionManagement; 
import javax.ejb.TransactionManagementType;
Run Code Online (Sandbox Code Playgroud)

一些解决方案暗示将库j2ee.jarjavaee.jar 添加到java构建路径中.

我正在使用jdk-7u75-windows-x64,java_ee_sdk-7-windows-ml并且在给定位置找不到任何这些库($ JAVA_HOME\lib).我在Windows 7 x64机器上使用eclipse(kepler)

java eclipse ejb java-ee

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

如何在java中创建自定义注释?

我想在java中创建自定义注释DirtyChecking.就像我想使用此注释比较两个字符串值,并在比较后将返回一个boolean值.

例如:我将放置@DirtyCheck("newValue","oldValue")属性.

假设我创建了一个界面:

 public @interface DirtyCheck {
    String newValue();
    String oldValue();
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 在哪里创建一个类来创建一个比较两个字符串值的方法?我的意思是,这个注释如何通知我必须调用这个方法?
  2. 如何检索此方法的返回值?

java annotations

12
推荐指数
1
解决办法
1万
查看次数

为什么在java中使用`transient`关键字?

我有一个与java中修饰符transient之前的关键字使用相关的问题private.

变量声明:

transient private ResourceBundle pageResourceBundle; 
Run Code Online (Sandbox Code Playgroud)

我的班级看起来像这样:

public class LoginViewModel extends AbstractViewModel {

    transient private ResourceBundle pageResourceBundle;

    @AfterCompose
    public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
        initializeLoginValues();
        boolean timeout = BooleanUtils.toBoolean(getHttpServletRequest().getParameter("timeout"));
        if (timeout) {
            Messagebox.show(pageResourceBundle.getText("MSG_SESSION_HAS_EXPIRED_PLEASE_LOGIN"), pageResourceBundle.getText("LABEL_ALERT"),
                    Messagebox.OK, Messagebox.ERROR);
        }
        view.getPage().setTitle(CsdcLicence.get().getApplicationName());
    }
Run Code Online (Sandbox Code Playgroud)

我有一些问题.

1.为什么transient在私有变量之前使用关键字?

2.使用此关键字的目的是什么?

java serialization modifier keyword transient

11
推荐指数
3
解决办法
4万
查看次数

为什么添加@EnableAutoConfiguration导致spring-boot失败并显示"无法找到要扫描的JPA包"

为什么添加@EnableAutoConfiguration到以下spring-boot应用程序会导致它无法创建entityManagerFactory?如果我删除@EnableAutoConfiguration一切正常.任何人都可以阐明这种行为吗?

package test.builder;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;

import test.builder.jpa.entity.Builder;
import test.builder.jpa.repository.BuilderRepository;

@Configuration
// @EnableAutoConfiguration
@EnableJpaRepositories("test.builder")
@PropertySource("classpath:application.properties")
public class BootApp implements CommandLineRunner {

    private static Logger logger = LoggerFactory.getLogger(BootApp.class);

    @Value("${spring.datasource.driverClassName}")
    private String databaseDriverClassName;

    @Value("${spring.datasource.url}")
    private String datasourceUrl;

    @Value("${spring.datasource.username}")
    private String databaseUsername; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa spring-boot

10
推荐指数
2
解决办法
6万
查看次数

JiraRestClient搜索未返回JQL查询结果

我面临与Search JQL相关的问题。我正在使用查询

(issuefunction in issuesInEpics('key = ABCD-24911') and issuetype=Feature)
Run Code Online (Sandbox Code Playgroud)

在Jira中,它返回一些记录,但是当我使用此查询时,JiraRestClient它不起作用,而是返回零记录。

以下查询工作正常:

issuefunction in issuesInEpics("resolution is not empty") and issuetype = Feature
Run Code Online (Sandbox Code Playgroud)

代码段:

String query="issuefunction in issuesInEpics('key = ABCD-24911') and issuetype=Feature";    
Integer resultsLength=50,startAt=0;        
JiraRestClient.getSearchClient().searchJql(query,resultsLength,startAt,null);
Run Code Online (Sandbox Code Playgroud)

我的Maven依赖关系:

<dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client-api</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client-core</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.atlassian.fugue</groupId>
        <artifactId>fugue</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
    <groupId>com.atlassian.httpclient</groupId>
    <artifactId>atlassian-httpclient-spi</artifactId>
    <version>0.17.0-m01</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我找到解决方案。

java rest jira jira-plugin jira-rest-api

7
推荐指数
1
解决办法
343
查看次数

如何在Go中查找NAPTR记录?

我试图NAPTR在Go中查询记录.看来DNS"网络"库中提供的基础知识不会让我访问.因此我正在考虑使用(参见文档),但找不到任何基本的例子.是否有关于替代方案的建议或有关如何查询的一些见解NAPTR

dns go

6
推荐指数
1
解决办法
529
查看次数