GVKun编程网logo

在PHPUnit数据提供程序中设置和使用参数(php中提供了多种输出语句,其中可以输出数据类型的是)

6

本文将分享在PHPUnit数据提供程序中设置和使用参数的详细内容,并且还将对php中提供了多种输出语句,其中可以输出数据类型的是进行详尽解释,此外,我们还将为大家带来关于.NET实现之(WebServ

本文将分享在PHPUnit数据提供程序中设置和使用参数的详细内容,并且还将对php中提供了多种输出语句,其中可以输出数据类型的是进行详尽解释,此外,我们还将为大家带来关于.NET实现之(WebService数据提供程序)、5.0.0 迁移后,使用提供程序的多提供程序失败、c# – 无法为名为MySql.Data.MySqlClient的数据提供程序获取提供程序工厂、Junit 单元测试 的配置和使用的相关知识,希望对你有所帮助。

本文目录一览:

在PHPUnit数据提供程序中设置和使用参数(php中提供了多种输出语句,其中可以输出数据类型的是)

在PHPUnit数据提供程序中设置和使用参数(php中提供了多种输出语句,其中可以输出数据类型的是)

我正在尝试为使用全局参数(来自YML文件)的服务编写测试.

我正在setUp()方法中检索这些参数,但是当我尝试在@dataProvider中使用它们时,它会抛出一个错误.

class InterpreterServiceTest extends KernelTestCase
{
    private $container;
    private $service;
    private $citiesMap;

    public function setUp()
    {
        self::bootKernel();
        $this->container = self::$kernel->getContainer();
        $this->service = $this->container->get('geolocation.interpreter');
        $this->citiesMap = $this->container->getParameter("citiesmap");
        self::tearDown();
    }

    /**
     * @dataProvider locationsprovider
     */
    public function testCompanyCityFromCity($location,$expected)
    {
        $city = $this->service->getCompanyCityFromCity($location);
        $this->assertEquals($expected,$city);
    }

    public function locationsprovider()
    {
        $return = array();
        foreach ($this->citiesMap as $area) {
            $return[] = [
                $area['external_service_area'],$area['company_area']
            ];
        }
        return $return;
    }
}

Invalid argument supplied for foreach()

如果我手动编写locationsprovider()的返回它是有效的

return [
    ["Barcelona","Barcelona"],["Madrid","Madrid"],["Cartagena","Murcia"]
];

我也检查了setUp()中的foreach,它返回了正确的预期数组.

似乎@dataProvider在setUp()方法之前执行.

有没有不同的方法来做到这一点?

解决方法

害怕你必须在dataProvider方法中获取所有数据(包括服务obj)

TL& DR这应该这样做:

class InterpreterServiceTest extends KernelTestCase
{
    /**
     * @dataProvider locationsprovider
     */
    public function testCompanyCityFromCity($service,$location,$expected)
    {
        $city = $service->getCompanyCityFromCity($location);

        $this->assertEquals($expected,$city);
    }

    public function locationsprovider()
    {
        self::bootKernel();

        $container = self::$kernel->getContainer();
        $service = $this->container->get('geolocation.interpreter');
        $citiesMap = $this->container->getParameter("citiesmap");
        // self::tearDown(); - depends on what is in the tearDown

        $return = array();
        foreach ($citiesMap as $area) {
            $return[] = [
                $service,$area['external_service_area'],$area['company_area']
            ];
        }

        return $return;
    }
}

为什么:

setUp和setUpBeforeClass方法都在PHPUnit_Framework_TestSuite类的run方法中运行.但是,dataProvider中的数据先前作为createTest函数的一部分计算.

.NET实现之(WebService数据提供程序)

.NET实现之(WebService数据提供程序)

说起数据提供程序大家都不陌生,数据提供程序的作用就是以统一的接口去访问不同的数据源,如OledbProvider、sqlServerProvider、OrcaleProvider等等;不同数据源的访问其实是不一样的,微软数据源的访问方式从ODBC到ADO.NET经历了很多路程,各大数据源提供商,都在不断的生产不同结构的数据库,为了以统一的接口去访问各种不同的数据源,微软的.NET为我们提供了ADO.NET,我们通过ADO.NET可以很方便的访问不同厂商生产的不同数据库,ADO.NET也为后期自定义数据提供程序规定了一套接口,只要我们自己去实现它就可以用同一种方式,访问我们自己的数据源,我们可以通过封装访问我们的XML数据源、文本数据源、二进制数据源、WebService数据源、对应用程序员来说,可能有很少一部分人去关注后台的具体实现的细节;对于刚毕业的学生来说,大部分的知识还没有转变成对技术的主观思考,刚刚接触数据提供程序可能有点陌生,所以我们尽可能的将复杂的东西进行简单化,让不需要接触后台代码的程序员就不要接触,减少思考的时间;

今天我要向大家介绍的是WebService数据提供程序,是建立在ADO.NET一套规范接口上的,为什么我会有这样的想法去写这个提供程序,主要来源于我在一段工作时间中不断遇到企业使用我们的分布式系统遇到的种种问题,因为我们的分布式系统是采用.NETRemoting实现的,端口是用的8085,走的是TCP协议;给企业部署项目的时候,由于企业的网络结构比较复杂,在加上我们不了解企业的网络结构,所以在很大程序上增加了我们的维护工作量,也给企业带来了很大的维护时间开销,我们的.NETRemoting是用Windows服务作为宿主,部署在应用服务器上,通过路由器的端口映射来处理客户端的TCP请求;很少一部分企业的网络结构简单,没有复杂的安全防线,由于我们公司做的项目相对而言还是比较大的,都是一些大中型企业;他们的网络的系数很高,防火墙的设置基本上是不允许使用TCP协议的,而且除了常用的协议端口如HTTP的80、FTP的21等,其余的一律封闭,所以我们的系统很难部署使用,但是后来这个问题也解决的了,将.NETRemoting部署到IIS上了,也通过80端口进来再由.NETRemoting子系统去处理;但是过了一段时间,我感觉通过WebService也能很好的实现,所以就写出来与大家分享一下,可能有人觉得WebService没有.NETRemoting效率高,对于大数据量可能会有问题,还有WebService的安全认证怎么控制,这些问题如果需要可以上网参考相关资料,对于安全认证可以在C/S系统加上Session的相应机制,这里就不多说了;

1:

该图给出一般分布式系统的网络拓扑图,企业和服务器各自在内网,企业通过WebService数据提供程序访问我们的数据源;

2:

在下已经实现一个基本的原型,在HZ.DataProvider.WebServiceDBManager服务器项目中,可以实现很多种数据源,在WebService与数据库服务器之间可以架设ORM很宽松的实现数据访问,可以随意切换数据库类型;这样层层隔离,也是一种好的开发方式;

3:

通过提供程序获取DataReader对象,前台完全和以前我们所熟悉的一样开发,对于刚进公司开发的程序员来说,也是一中解脱,不需要关注后台复杂的实现,只需要按照一贯的方式开发就行;

4:

5:

图5是服务器端的实现代码,这部分代码就是连接数据库服务器的代码,将客户端传递过来的sql去执行,并返回数据库返回的结果给客户端;

源码:HZ.WebServiceProvider数据提供程序   (仅供学习参考)

5.0.0 迁移后,使用提供程序的多提供程序失败

5.0.0 迁移后,使用提供程序的多提供程序失败

如何解决5.0.0 迁移后,使用提供程序的多提供程序失败?

我尝试迁移到 provider: ^5.0.0 并停止工作,对之前工作的内容进行采样。

  @override
  Widget build(BuildContext context) {
    WidgetsFlutterBinding.ensureInitialized();
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<ConfigurationProvider>(create: (context) => ConfigurationProvider(preferences: widget.preloadedFs)),ChangeNotifierProvider<ManagerProvider>(create: (context) => ManagerProvider()),],child: Builder(builder: (context) {
        ConfigurationProvider config = Provider.of<ConfigurationProvider>(context);
        ThemeData customTheme;
        ThemeData darkTheme;

        darkTheme = config.blackThemeEnabled ? AppTheme.black(config.accentColor) : AppTheme.dark(config.accentColor);
        customTheme = config.darkThemeEnabled ? darkTheme : AppTheme.white(config.accentColor);
        List<Locale> supportedLocales = [];
        supportedLanguages.forEach((element) => supportedLocales.add(Locale(element.languageCode,'''')));

        return MaterialApp(
          locale: _locale,supportedLocales: supportedLocales,localizationsDelegates: [
            FallbackLocalizationDelegate(),AppLocalizationsDelegate(),GlobalMaterialLocalizations.delegate,GlobalWidgetsLocalizations.delegate,GlobalCupertinoLocalizations.delegate,localeResolutionCallback: (locale,supportedLocales) {
            for (var supportedLocale in supportedLocales) {
              if (supportedLocale?.languageCode == locale?.languageCode && supportedLocale?.countryCode == locale?.countryCode) {
                return supportedLocale;
              }
            }
            return supportedLocales?.first;
          },builder: (context,child) {
            return ScrollConfiguration(
              behavior: CustomScrollBehavior(),child: child,);
          },);
      }),);
  }

错误日志

======== Exception caught by widgets library =======================================================
The following ArgumentError was thrown building Builder(dirty,dependencies: [_InheritedProviderScope<ConfigurationProvider>]):
Invalid argument(s) (value): Must not be null

The relevant error-causing widget was: 
  Builder file:///home/sony/Flutter-sdk/Flutter-app/demo-Flutter/lib/main.dart:109:14
When the exception was thrown,this was the stack: 
#0      ArgumentError.checkNotNull (dart:core/errors.dart:185:27)
#1      SharedPreferences._setValue (package:shared_preferences/shared_preferences.dart:146:19)
#2      SharedPreferences.setString (package:shared_preferences/shared_preferences.dart:132:7)
#3      LegacyPreferences.saveAudioDownloadpath (package:demo/internal/legacyPreferences.dart:127:11)
#4      ConfigurationProvider.audioDownloadpath= (package:demo/provider/configurationProvider.dart:165:17)
...
====================================================================================================

======== Exception caught by widgets library =======================================================
The following StateError was thrown building Builder(dirty,dependencies: [_InheritedProviderScope<ConfigurationProvider>]):
Bad state: Tried to read a provider that threw during the creation of its value.
The exception occurred during the creation of type ConfigurationProvider.

The relevant error-causing widget was: 
  Builder file:///home/sony/Flutter-sdk/Flutter-app/demo-Flutter/lib/main.dart:109:14
When the exception was thrown,this was the stack: 
#0      _CreateInheritedProviderState.value (package:provider/src/inherited_provider.dart:661:7)
#1      _InheritedProviderScopeElement.value (package:provider/src/inherited_provider.dart:544:33)
#2      Provider.of (package:provider/src/provider.dart:289:29)
#3      _MainState.build.<anonymous closure> (package:demo/main.dart:110:49)
#4      Builder.build (package:Flutter/src/widgets/basic.dart:7798:48)
...
====================================================================================================

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

c# – 无法为名为MySql.Data.MySqlClient的数据提供程序获取提供程序工厂

c# – 无法为名为MySql.Data.MySqlClient的数据提供程序获取提供程序工厂

我有 Windows 8.1,MySql 5.6和Visual Studio Ultimate 2012.

我正在尝试设置一个DataSet,但我遇到错误当我尝试将表拖到DataSet时,无法获取名为MysqL.Data.MysqLClient的数据提供程序的提供程序工厂.

a)服务器资源管理器可以访问数据库并向我显示所有表,“测试连接”按钮返回成功的消息.

b)我添加了对bin文件夹的MysqL引用(MysqL.Data,MysqL.Data.Entity,MysqL.Web).

c)我编辑了Web.config文件,删除了MysqL.Data.MysqLClient不变量并再次添加“正确”设置.我尝试设置< connectionStrings>,< DbProviderFactories>,成员资格提供程序,配置文件提供程序和RoleManager提供程序;

d)我已经卸载并重新安装了MysqL和Visual Studio.

似乎没有什么工作,同样的错误仍在发生.我已经尝试过这个和其他论坛的很多建议.

解决方法

为我工作,步骤如下:

>关闭Visual Studio
>运行MysqL Connector / Net并删除安装
>再次运行连接器并按照删除之前的步骤进行安装(典型/自定义).
>打开Visual Studio
>从解决方案和服务器资源管理器中删除与服务器/数据库/数据集的所有连接.不要删除任何代码行.
>重新建立与数据库的连接,并按原样命名.
>按原样重新建立数据集的数据源连接.
>点击播放,快乐!

希望这可以帮助.

Junit 单元测试 的配置和使用

Junit 单元测试 的配置和使用

1. 基本上Eclipse和Myeclipse 下的配置都差不多。 以下讲的是Myeclipse8.6下怎么配置:


Myeclipse8.6里面已经自带了Junit3和Junit4的libarary。那么在你项目(选择包视图)引用的选项configure build path中,点击Add Library,然后在左侧的列表中选择Junit,next之后选择Junit4.

如图:


上面的配置好了以后呢,单独建立一个源文件夹test。在其中写出你自己的测试类,用于测试各个方法。写程序的时候,在你要测试的方法上边写上@Test ,


测试类 结构如下(beforeClass是在testcheckUserPassword()方法之前执行,afterClass是在testcheckUserPassword()方法之后执行):


@SuppressWarnings( { "unchecked", "unused" })
public class CentrexIntefaceTest {

@BeforeClass
public static void beforeClass() {
 .....
 }

@AfterClass
public static void afterClass() {
....
 }

@Test
public void testcheckUserPassword() {

.........

}

}


2.  若 MyEclipse下JUnit报错“The input type of the launch configuration does not exist ” 怎么解决?


首先:切换到MyEclipse的Package Explorer 视图

观察:test下的包全部变成了文件夹 
解决:选中test,右键,选择Build Path---remove from Build Path
     然后再次选择Build Path----User as Source Folder
     解决.


3.如何运行写好的Junit测试方法? 

首先:切换到MyEclipse的Package Explorer 视图

选择相关的测试类的想法方法,鼠标右击 选择run as Junit Test  即可。

MyEclipse的Navigator视图下是不行的。



关于在PHPUnit数据提供程序中设置和使用参数php中提供了多种输出语句,其中可以输出数据类型的是的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.NET实现之(WebService数据提供程序)、5.0.0 迁移后,使用提供程序的多提供程序失败、c# – 无法为名为MySql.Data.MySqlClient的数据提供程序获取提供程序工厂、Junit 单元测试 的配置和使用等相关内容,可以在本站寻找。

本文标签: